diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidationManager.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidationManager.kt index f4514ad4f..179466d1a 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidationManager.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidationManager.kt @@ -16,6 +16,7 @@ package com.embabel.agent.spi.validation import com.embabel.agent.core.AgentScope +import com.embabel.common.core.validation.ValidationResult interface AgentValidationManager { fun validate(agentScope: AgentScope): ValidationResult diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidator.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidator.kt index f2e977d3d..929c9586f 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidator.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/AgentValidator.kt @@ -16,6 +16,7 @@ package com.embabel.agent.spi.validation import com.embabel.agent.core.AgentScope +import com.embabel.common.core.validation.ValidationResult fun interface AgentValidator { @@ -31,36 +32,3 @@ fun interface AgentStructureAgentValidator : AgentValidator { } interface PathToCompletionAgentValidator : AgentValidator - -data class ValidationResult( - val isValid: Boolean, - val errors: List, -) { - - companion object { - val VALID = ValidationResult( - isValid = true, - errors = emptyList(), - ) - } -} - -data class ValidationError( - val code: String, - val message: String, - val severity: ValidationSeverity, - val location: ValidationLocation, -) - -enum class ValidationSeverity { - ERROR, - WARNING, - INFO -} - -data class ValidationLocation( - val type: String, - val name: String, - val agentName: String, - val component: String, -) diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentStructureValidator.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentStructureValidator.kt index 9f90629b6..794e62c12 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentStructureValidator.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentStructureValidator.kt @@ -19,6 +19,10 @@ import com.embabel.agent.api.annotation.Action import com.embabel.agent.api.annotation.Agent import com.embabel.agent.api.annotation.Condition import com.embabel.agent.core.AgentScope +import com.embabel.common.core.validation.ValidationError +import com.embabel.common.core.validation.ValidationLocation +import com.embabel.common.core.validation.ValidationResult +import com.embabel.common.core.validation.ValidationSeverity import com.embabel.common.util.loggerFor import org.springframework.beans.factory.InitializingBean import org.springframework.beans.factory.getBeansWithAnnotation diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentValidationManager.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentValidationManager.kt index 76327583e..3e3fa112a 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentValidationManager.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DefaultAgentValidationManager.kt @@ -16,6 +16,7 @@ package com.embabel.agent.spi.validation import com.embabel.agent.core.AgentScope +import com.embabel.common.core.validation.ValidationResult import org.slf4j.LoggerFactory import org.springframework.stereotype.Service diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DetailedValidationResult.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DetailedValidationResult.kt index b817c4cc8..b6629c945 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DetailedValidationResult.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/DetailedValidationResult.kt @@ -15,6 +15,8 @@ */ package com.embabel.agent.spi.validation +import com.embabel.common.core.validation.ValidationResult + data class DetailedValidationResult( val isValid: Boolean, val results: Map, diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/GoapPathToCompletionValidator.kt b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/GoapPathToCompletionValidator.kt index b3314967d..64ca8e3a7 100644 --- a/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/GoapPathToCompletionValidator.kt +++ b/embabel-agent-api/src/main/kotlin/com/embabel/agent/spi/validation/GoapPathToCompletionValidator.kt @@ -17,6 +17,10 @@ package com.embabel.agent.spi.validation import com.embabel.agent.core.AgentScope import com.embabel.agent.core.support.Rerun.HAS_RUN_CONDITION_PREFIX +import com.embabel.common.core.validation.ValidationError +import com.embabel.common.core.validation.ValidationLocation +import com.embabel.common.core.validation.ValidationResult +import com.embabel.common.core.validation.ValidationSeverity import com.embabel.plan.common.condition.ConditionAction import com.embabel.plan.common.condition.ConditionDetermination import com.embabel.plan.common.condition.ConditionGoal diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationError.kt b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationError.kt new file mode 100644 index 000000000..c0814cc5d --- /dev/null +++ b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationError.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2024-2026 Embabel Pty Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.embabel.common.core.validation + +data class ValidationError( + val code: String, + val message: String, + val severity: ValidationSeverity, + val location: ValidationLocation, +) diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationLocation.kt b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationLocation.kt new file mode 100644 index 000000000..36769b276 --- /dev/null +++ b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationLocation.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2024-2026 Embabel Pty Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.embabel.common.core.validation + +data class ValidationLocation( + val type: String, + val name: String, + val agentName: String, + val component: String, +) diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationResult.kt b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationResult.kt new file mode 100644 index 000000000..98e76fbab --- /dev/null +++ b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationResult.kt @@ -0,0 +1,29 @@ +/* + * Copyright 2024-2026 Embabel Pty Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.embabel.common.core.validation + +data class ValidationResult( + val isValid: Boolean, + val errors: List, +) { + + companion object { + val VALID = ValidationResult( + isValid = true, + errors = emptyList(), + ) + } +} diff --git a/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationSeverity.kt b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationSeverity.kt new file mode 100644 index 000000000..5a1e53abd --- /dev/null +++ b/embabel-agent-api/src/main/kotlin/com/embabel/common/core/validation/ValidationSeverity.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2024-2026 Embabel Pty Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.embabel.common.core.validation + +enum class ValidationSeverity { + ERROR, + CRITICAL, + WARNING, + INFO +}