Conversation
There was a problem hiding this comment.
🟡 Changes recommended
There are at least two confirmed runtime-safety/type issues in the current diff (resourceReference enum parsing can throw; fitView padding uses px strings) that should be fixed before approval.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR upgrades workflow validation and error surfacing so “missing/broken workflow data” is continuously visible on the workflow editor canvas (node badges, top note, and an issues sidebar) instead of transient toasts or only the JSON editor.
Changes:
- Server: extends workflow validation with resource-reference resolution (env-aware), structured per-node issues (
nodeIssues), and reduced false positives in validation. - Client: adds a unified workflow-issues store that merges server validator issues, a client sweep, and live lookup failures; renders issues on the canvas + sidebar; routes lookup failures away from global toasts.
- API/Schema: extends GraphQL
validateWorkflow*to acceptenvironmentIdand returnnodeIssues.
File summaries
| File | Description |
|---|---|
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorOptionalClusterElementTest.java | Adds coverage for required vs optional cluster-element missing warnings. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorNestedTaskAttributionTest.java | Adds coverage to attribute nested-task validation errors correctly. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorInputsTest.java | Updates test stub to match new facade methods with environment. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorFacadeResourceProviderTest.java | Adds tests for env-aware resource-reference provider dispatch. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorFacadeClusterTypesTest.java | Adds tests for required cluster-element type key selection. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorEmptyRequiredValueTest.java | Adds coverage for required values cleared to null/blank. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorDynamicPropertiesTest.java | Adds coverage for dynamic-property and display-condition suppression. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorDuplicateNodeNamesTest.java | Updates test stub to match new facade methods with environment. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorClusterElementsTest.java | Updates cluster-element assertions and warning expectations. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/WorkflowValidatorClusterElementRequiredPropertyTest.java | Adds coverage for missing required properties inside cluster elements. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/test/java/com/bytechef/platform/workflow/validator/PropertyInfoTest.java | Adds regression tests around the new resourceType record field. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/WorkflowValidator.java | Threads resource-reference provider + required cluster types through validation. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ValidationErrorUtils.java | Adds standardized messages for missing/unverifiable resources. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ValidationContext.java | Carries required-cluster-type logic and resource-reference provider. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ResourceReferenceValidator.java | New recursive validator that checks resource references in parameters. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/PropertyValidator.java | Treats null/blank required values as missing; improves undefined-property checks. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/ObjectPropertyValidator.java | Stops warning on object keys when a property declares no nested properties. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/NodeValidationIssueParser.java | New parser mapping flat validator messages into structured per-node issues. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/src/main/java/com/bytechef/platform/workflow/validator/DataPillValidator.java | Refines loop .item indexing and error wording for loop item type checks. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-service/build.gradle.kts | Adds dependency needed by resource-reference validation integration. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-graphql/src/test/java/com/bytechef/platform/workflow/validator/web/graphql/WorkflowValidatorGraphQlControllerTest.java | Adds coverage for optional env argument forwarding. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-graphql/src/main/resources/graphql/workflow-validator.graphqls | Extends GraphQL schema with environmentId and nodeIssues. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-graphql/src/main/java/com/bytechef/platform/workflow/validator/web/graphql/WorkflowValidatorGraphQlController.java | Adds optional environmentId arguments and routes to correct facade overload. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/src/main/java/com/bytechef/platform/workflow/validator/WorkflowValidatorFacade.java | Adds env-aware validation API and introduces node issue model types. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/src/main/java/com/bytechef/platform/workflow/validator/ResourceReferenceResolver.java | New SPI for module-owned resource reference resolution. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/src/main/java/com/bytechef/platform/workflow/validator/model/PropertyInfo.java | Adds resourceType to property metadata shape and maintains legacy constructors. |
| server/libs/platform/platform-workflow/platform-workflow-validator/platform-workflow-validator-api/build.gradle.kts | Exposes definition-api to reference ResourceType. |
| server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/src/test/java/com/bytechef/platform/knowledgebase/service/KnowledgeBaseReferenceResolverTest.java | Adds unit tests for knowledge-base resource resolver. |
| server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/src/test/java/com/bytechef/platform/knowledgebase/service/KnowledgeBaseReferenceResolverRegistrationTest.java | Adds spring-context registration tests for conditional resolver bean. |
| server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/src/main/java/com/bytechef/platform/knowledgebase/service/KnowledgeBaseReferenceResolver.java | Implements ResourceReferenceResolver for knowledge bases (env-aware). |
| server/libs/platform/platform-knowledge-base/platform-knowledge-base-service/build.gradle.kts | Adds dependency on workflow-validator API for resolver SPI. |
| server/libs/platform/platform-data-table/platform-data-table-service/src/test/java/com/bytechef/platform/data/table/configuration/service/DataTableReferenceResolverTest.java | Adds unit tests for data-table resource resolver. |
| server/libs/platform/platform-data-table/platform-data-table-service/src/main/java/com/bytechef/platform/data/table/configuration/service/DataTableReferenceResolver.java | Implements ResourceReferenceResolver for data tables (env-aware). |
| server/libs/platform/platform-data-table/platform-data-table-service/build.gradle.kts | Adds dependency on workflow-validator API for resolver SPI. |
| server/libs/platform/platform-configuration/platform-configuration-service/src/test/java/com/bytechef/platform/configuration/facade/WorkflowNodeOutputFacadeTest.java | Adds regression test ensuring failed dynamic outputs don’t break downstream outputs. |
| server/libs/platform/platform-configuration/platform-configuration-service/src/main/java/com/bytechef/platform/configuration/facade/WorkflowNodeOutputFacadeImpl.java | Swallows dynamic-output failures for “previous nodes” while keeping strict behavior elsewhere. |
| server/libs/platform/platform-component/platform-component-api/src/test/java/com/bytechef/platform/component/domain/PropertyResourceTypeTest.java | Adds test coverage for resourceReference metadata propagation to platform properties. |
| server/libs/platform/platform-api/src/main/java/com/bytechef/platform/domain/BaseProperty.java | Reads resourceReference from metadata and exposes it on platform BaseProperty. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/trigger/DataTableRecordUpdatedTrigger.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/trigger/DataTableRecordDeletedTrigger.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/trigger/DataTableRecordCreatedTrigger.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableUpdateRecordAction.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableGetRecordAction.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableFindRecordsAction.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableDeleteRecordsAction.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableCreateRecordsAction.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/data-table/src/main/java/com/bytechef/component/datatable/action/DataTableClearTableAction.java | Marks data-table “table” property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/test/resources/definition/knowledgeBase_v1.json | Updates generated definition JSON to include resourceReference metadata. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/util/KnowledgeBaseVectorStore.java | Marks knowledge base id property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseUpdateTool.java | Marks knowledge base id property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseSearchTool.java | Marks knowledge base id property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseUpdateAction.java | Marks knowledge base id property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseSearchAction.java | Marks knowledge base id property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseLoadAction.java | Marks knowledge base id property as a resource reference. |
| server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseDeleteAction.java | Marks knowledge base id property as a resource reference. |
| sdks/backend/java/definition-api/src/main/java/com/bytechef/definition/BaseProperty.java | Adds ResourceType enum and resource-reference metadata key to the SDK API. |
| sdks/backend/java/component-api/src/test/java/com/bytechef/component/definition/ComponentDslResourceReferenceTest.java | Adds tests for DSL metadata emission of resource references. |
| sdks/backend/java/component-api/src/main/java/com/bytechef/component/definition/ComponentDsl.java | Adds .resourceReference(...) DSL helper storing metadata. |
| client/src/shared/util/workflowNodeLookupUrl.ts | Adds URL parser to attribute lookup failures to workflow nodes/properties. |
| client/src/shared/util/tests/workflowNodeLookupUrl.test.ts | Adds unit tests for workflow-node lookup URL parsing. |
| client/src/shared/middleware/graphql.ts | Updates validateWorkflow query types and selection to include nodeIssues + env. |
| client/src/shared/middleware/graphql-types.ts | Adds GraphQL types for workflow issues and env args on validation queries. |
| client/src/shared/constants.tsx | Adds CANVAS_TOP_OFFSET and supports layout shifts with issues UI. |
| client/src/pages/platform/workflow-editor/WorkflowEditorLayout.tsx | Wires issues sweep/validation, mounts issues sidebar, removes retired ErrorsBanner. |
| client/src/pages/platform/workflow-editor/utils/tests/openNodeDetails.test.ts | Adds test ensuring opening node details closes the issues sidebar. |
| client/src/pages/platform/workflow-editor/utils/openNodeDetails.ts | Centralizes node-opening logic and ensures issues sidebar closes when opening details. |
| client/src/pages/platform/workflow-editor/utils/openIssuesSidebar.ts | Adds helper to open issues sidebar and close competing right-docked panels. |
| client/src/pages/platform/workflow-editor/utils/describeWorkflowIssueCounts.ts | Adds shared formatting for “X errors, Y warnings”. |
| client/src/pages/platform/workflow-editor/utils/collectWorkflowIssues.ts | Adds client-side sweep to detect missing reference roots and duplicates. |
| client/src/pages/platform/workflow-editor/utils/collectWorkflowIssues.test.ts | Adds tests for sweep behavior across nested tasks and expression parsing. |
| client/src/pages/platform/workflow-editor/stores/useWorkflowIssuesStore.ts | Adds a unified issues store with merge/dedupe rules and live lookup failure tracking. |
| client/src/pages/platform/workflow-editor/stores/tests/useWorkflowIssuesStore.test.ts | Adds unit tests for issue keying, merging, ordering, and store operations. |
| client/src/pages/platform/workflow-editor/providers/workflowEditorReadOnlyContext.ts | Adds read-only context used to suppress issue UI in read-only editor mounts. |
| client/src/pages/platform/workflow-editor/nodes/WorkflowNode.test.tsx | Adds coverage that nodes display an issue badge when issues exist. |
| client/src/pages/platform/workflow-editor/hooks/useWorkflowLayout.ts | Adds “Workflow Issues” rail behavior and closes conflicts when toggling panels. |
| client/src/pages/platform/workflow-editor/hooks/useWorkflowIssuesValidation.ts | Adds hook fetching validator nodeIssues and storing them with env scoping. |
| client/src/pages/platform/workflow-editor/hooks/useWorkflowIssuesSweep.ts | Adds hook to populate sweep issues whenever workflow structure changes. |
| client/src/pages/platform/workflow-editor/hooks/useWorkflowIssues.ts | Adds merged issues selector hook (live + validator + sweep). |
| client/src/pages/platform/workflow-editor/hooks/useWorkflowEditorCanvas.ts | Accounts for issues sidebar width and sets viewport top offset. |
| client/src/pages/platform/workflow-editor/hooks/useWorkflowCodeEditorSheet.ts | Adds warnings panel support and exposes warnings state/refs. |
| client/src/pages/platform/workflow-editor/hooks/useNodeIssues.ts | Adds per-node issue aggregation for badges (incl. cluster-element matching). |
| client/src/pages/platform/workflow-editor/hooks/useNodeClick.ts | Refactors click behavior to reuse shared openNodeDetails. |
| client/src/pages/platform/workflow-editor/hooks/useLayout.tsx | Updates layout shift animation to account for issues sidebar open/close. |
| client/src/pages/platform/workflow-editor/hooks/useFlowCenterOffset.ts | Adds computed center offset so the top issues note stays visually centered. |
| client/src/pages/platform/workflow-editor/hooks/useDelayedUnmount.ts | Adds reusable “delayed unmount” hook for sidebar open/close transitions. |
| client/src/pages/platform/workflow-editor/hooks/tests/useWorkflowIssuesValidation.test.ts | Adds tests for env-scoped query variables and validator-issue storage/clearing. |
| client/src/pages/platform/workflow-editor/hooks/tests/useNodeClick.test.ts | Adjusts mocks to support new store usage via getState. |
| client/src/pages/platform/workflow-editor/components/WorkflowRightSidebar.tsx | Adds “Workflow Issues” rail button with count badge and active state. |
| client/src/pages/platform/workflow-editor/components/WorkflowNodeIssueBadge.tsx | Adds node-level issue indicator badge (suppressed in read-only). |
| client/src/pages/platform/workflow-editor/components/WorkflowIssuesSidebar.tsx | Adds right-docked issues sidebar grouped by node with click-to-open behavior. |
| client/src/pages/platform/workflow-editor/components/WorkflowIssuesNote.tsx | Adds top-center note summarizing issues and opening sidebar. |
| client/src/pages/platform/workflow-editor/components/WorkflowEditorToolbar.tsx | Adjusts Fit View behavior to reserve top space for issue note/tooling. |
| client/src/pages/platform/workflow-editor/components/WorkflowEditor.tsx | Adds read-only context provider and swaps hint for issues note when needed. |
| client/src/pages/platform/workflow-editor/components/WorkflowCodeEditorSheet.tsx | Adds warnings panel UI and increases sheet width. |
| client/src/pages/platform/workflow-editor/components/tests/WorkflowIssuesSidebar.test.tsx | Adds tests for sidebar grouping and node-opening integration. |
| client/src/pages/platform/workflow-editor/components/tests/WorkflowIssuesNote.test.tsx | Adds tests for fallback replacement, View behavior, and read-only suppression. |
| client/src/pages/platform/workflow-editor/components/tests/ErrorsBanner.test.tsx | Removes retired ErrorsBanner tests. |
| client/src/pages/platform/workflow-editor/components/ErrorsBanner.tsx | Removes retired ErrorsBanner component. |
| client/src/pages/platform/workflow-editor/components/properties/components/property-code-editor/property-code-editor-dialog/PropertyCodeEditorDialogRightPanelInput.tsx | Minor layout adjustment in code editor right panel UI. |
| client/src/pages/platform/workflow-editor/components/properties/components/property-code-editor/property-code-editor-dialog/PropertyCodeEditorDialogRightPanelConnections.tsx | Minor layout adjustment in code editor right panel UI. |
| client/src/pages/platform/workflow-editor/components/hooks/useWorkflowNodeDetailsPanel.ts | Fixes properties-tab fallback logic when operation has no properties. |
| client/src/pages/automation/project/Project.tsx | Tweaks sidebar transition easing curve for consistency with other panels. |
| client/src/graphql/platform/configuration/validateWorkflow.graphql | Updates query to send environmentId and fetch nodeIssues. |
| client/src/ee/pages/embedded/workflow-builder/config/useFetchInterceptor.ts | Routes workflow-node lookup failures into issues store instead of global toasts. |
| client/src/ee/pages/embedded/workflow-builder/config/tests/useFetchInterceptor.test.ts | Adds tests for recording/clearing lookup failures into issues store. |
| client/src/ee/pages/embedded/integration/Integration.tsx | Tweaks sidebar transition easing curve. |
| client/src/ee/pages/embedded/automation-workflow/AutomationWorkflow.tsx | Tweaks sidebar transition easing curve. |
| client/src/config/useFetchInterceptor.ts | Routes workflow-node lookup failures into issues store instead of global toasts. |
| client/src/config/tests/useFetchInterceptor.test.ts | Adds tests for recording/clearing lookup failures into issues store. |
Review details
- Files reviewed: 116/116 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
3a98b46 to
51abe62
Compare
19295d6 to
19013f2
Compare
… and a local sweep
…integration pages
|
|



Closes #5685
Workflow problems used to reach the user as toasts that vanish, or not at all. This surfaces them on the canvas: a note above the flow, a badge on every node that has one, and a sidebar listing them per node.
Server
validateWorkflowover GraphQL.Client
Tests
checkpasses (Spotless, Checkstyle, PMD, SpotBugs).The knowledge base integration tests fail on this branch and on master alike; they are unrelated to these changes.