feat(kernel,artifacts): inject artifact-kind vocabulary into architect context

This commit is contained in:
2026-06-11 10:06:40 +04:00
parent beed501d60
commit ed0dca8b78
10 changed files with 96 additions and 7 deletions
@@ -3,6 +3,7 @@ package com.correx.core.artifacts.kind
interface ArtifactKindRegistry {
fun register(kind: ArtifactKind)
fun get(id: String): ArtifactKind?
fun list(): Collection<ArtifactKind>
}
class DefaultArtifactKindRegistry : ArtifactKindRegistry {
@@ -18,4 +19,6 @@ class DefaultArtifactKindRegistry : ArtifactKindRegistry {
}
override fun get(id: String): ArtifactKind? = kinds[id]
override fun list(): Collection<ArtifactKind> = kinds.values.toList()
}
@@ -51,4 +51,25 @@ class ArtifactKindRegistryTest {
assert("path" in schema.required)
assert("content" in schema.required)
}
@Test
fun `list returns all registered kinds`() {
val ids = registry.list().map { it.id }.toSet()
assert("file_written" in ids) { "expected file_written in $ids" }
assert("process_result" in ids) { "expected process_result in $ids" }
assertEquals(2, ids.size)
}
@Test
fun `list reflects newly registered kind`() {
val schema = JsonSchema(
type = "object",
properties = mapOf("x" to JsonSchemaProperty(type = "string")),
required = listOf("x"),
)
registry.register(ConfigArtifactKind(id = "extra", schema = schema, llmEmitted = true))
val ids = registry.list().map { it.id }.toSet()
assert("extra" in ids) { "expected extra in $ids" }
assertEquals(3, ids.size)
}
}