Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new mechanism for registering and describing subtypes in type describers, adds object validation support, and includes several improvements and fixes across the codebase. The most significant changes are the addition of subtype registration and description in
TypeDescriberimplementations, a newValidatedObjectutility, and enhancements to YAML output for type descriptions.Subtype Registration and Description
subTypeRegistryand methods (registerSubType,registerSubTypes,clearSubTypes) toJsonDescriber,YamlDescriber, andTypeScriptDescriber, enabling dynamic registration and management of sub-implementations for parent classes. ([[1]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-49ff95267abdd5b2baa5ed8111824601f9c78a1c09ad82b093248435e4e07156L22-R48),[[2]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3ddfe8e062ab5c3c59271b131c9fd105ba915255fdb477b3c005e4ee8ea4fbb9R29-R55),[[3]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3906635f35ba4021ed5d23c0abe3a2910430c62c54fbee1df707b1958abde669R25-R66))TypeDescriberabstract class to require subtype registration methods, standardizing the interface for all describers. ([core/src/main/kotlin/com/simiacryptus/cognotik/describe/TypeDescriber.ktR21-R23](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-91cc167a61bb733988b01a4462e71d004f425ee096e06642fab8bbcb901ae531R21-R23))YamlDescriberto include registered subtypes in its YAML output, improving documentation and introspection of type hierarchies. ([[1]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3906635f35ba4021ed5d23c0abe3a2910430c62c54fbee1df707b1958abde669R84-R125),[[2]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3906635f35ba4021ed5d23c0abe3a2910430c62c54fbee1df707b1958abde669L192-R278),[[3]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3906635f35ba4021ed5d23c0abe3a2910430c62c54fbee1df707b1958abde669L209-R299),[[4]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3906635f35ba4021ed5d23c0abe3a2910430c62c54fbee1df707b1958abde669R315-R352),[[5]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3906635f35ba4021ed5d23c0abe3a2910430c62c54fbee1df707b1958abde669R386-R417))Object Validation Support
ValidatedObjectinterface, which provides recursive validation for objects and their fields/properties, including support for nested lists and custom error reporting. ([core/src/main/kotlin/com/simiacryptus/cognotik/util/ValidatedObject.ktR1-R65](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-edaf080fb4549318f42d0ea0d3c2b944722e3ee96d1676d1636cc2e93a06a1fbR1-R65))JsonUtilto automatically validate objects implementingValidatedObjectduring deserialization, logging warnings for validation failures. ([[1]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-cc53906c3e5387532c42dc65c60a5ff5bd3a7f4fad4094ba0d82aff636ceecb1R71-R76),[[2]](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-cc53906c3e5387532c42dc65c60a5ff5bd3a7f4fad4094ba0d82aff636ceecb1R85))Patch Processor Extension
Thermodynamicmode toPatchProcessors, offering a DNA-like binding energy approach for patch matching. ([core/src/main/kotlin/com/simiacryptus/cognotik/diff/PatchProcessors.ktR10-R19](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-107fd4a583d359db057d92c15cf1a74f2cd27bfa10163fad05b381ca03d2eff9R10-R19))Miscellaneous Improvements
feedbackRequested,feedbackOptOut) toAppSettingsStatefor improved user feedback management. ([intellij/src/main/kotlin/com/simiacryptus/cognotik/config/AppSettingsState.ktR85-R86](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-6fdc153a3cb3fbedb7c9c86db53c880a6f2200c30b1ab0ee81f11e0d649c9b37R85-R86))UsageTable, and minor refactoring for better code clarity. ([intellij/src/main/kotlin/com/simiacryptus/cognotik/config/UsageTable.ktR3-R25](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-535ad217a39573db644c1a7b5eea339a9b9224733bb8b7e3d2bee07c91f27598R3-R25))gradle.propertiesto2.0.17. ([gradle.propertiesL4-R4](https://github.com/SimiaCryptus/Cognotik/pull/21/files#diff-3d103fc7c312a3e136f88e81cef592424b8af2464c468116545c4d22d6edcf19L4-R4))These changes collectively enhance the flexibility, introspection, and reliability of the type description and object handling infrastructure.