feat(plugins): backend-engine-definition plugin (Phase 5 #47)#283
Merged
charlie83Gs merged 1 commit intomainfrom Apr 21, 2026
Merged
feat(plugins): backend-engine-definition plugin (Phase 5 #47)#283charlie83Gs merged 1 commit intomainfrom
charlie83Gs merged 1 commit intomainfrom
Conversation
Ships `plugins/backend-engine-definition/` as the first Phase-5 provider plugin — a new internal plugin that contributes the `default` `NodeDefinitionProvider` behind `GraphTypeComposition.definition` on the default graph type. The `DefaultNodeDefinitionProvider` wraps the LLM definition-synthesis flow today's `DefinitionPipeline.generate_definition` runs inline (`services/worker-nodes/.../pipelines/definitions/pipeline.py`) so registry-driven dispatch resolves to an identical prompt/LLM call — zero behaviour change for existing graphs. The provider is stateless: caller pre-fetches dimensions and passes them through `NodeDefinitionContext.options['dimensions']`. Keeps a graph-engine handle out of the ABC while matching the legacy pipeline's skip-path contract (no dims / empty LLM output / gateway exception → returns `None`, caller keeps previous definition). Registered in `kt_config.plugin.load_default_plugins` alongside the existing built-in plugins. No worker wiring in this PR — the `DefinitionPipeline` call sites continue to run the legacy path until a follow-up threads `plugin_registry.get_definition_provider` through every consumer (mirrors the P4 fact-decomposition plugin-then-wire sequencing in #279 → #44). Tests: 10 contract tests pinning plugin identity, `is_enabled` default, contribution id, registry round-trip, and provider semantics (empty-dims skip, dict/ORM dim rendering, `options` model override, empty-LLM skip, gateway-exception skip).
|
I have read the CLA Document and I hereby sign the CLA You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot. |
This was referenced Apr 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
plugins/backend-engine-definition/defaultNodeDefinitionProvidermatchingGraphTypeComposition.definitionon the default graph typekt_config.plugin.load_default_pluginsalongside existing built-in pluginsWhat changes
DefaultNodeDefinitionProviderwraps the LLM definition-synthesis flow today'sDefinitionPipeline.generate_definitionruns inline — registry-driven dispatch resolves to an identical prompt/LLM call, zero behaviour change for existing graphs.NodeDefinitionContext.options['dimensions']. Keeps a graph-engine handle out of the ABC while preserving the legacy skip-path contract (no dims / empty LLM output / gateway exception → returnsNone, caller keeps previous definition).DefinitionPipelinecall sites continue to run the legacy path. A follow-up will threadplugin_registry.get_definition_providerthrough every consumer (mirrors the P4 fact-decomposition plugin-then-wire sequencing: feat(plugins): backend-engine-fact-decomposition plugin (Phase 4 #44) #279 → feat(frontend): earth-tone theme, dark/light toggle, synthesis page improvements #44).Test plan
uv run --project plugins/backend-engine-definition pytest -x -v(10 contract tests green)uv run --project libs/kt-config pytest -x -v(236 green — registration doesn't regress registry)uv run --frozen ruff format --check ./ruff check .🤖 Generated with Claude Code