Skip to content

Issue 2: Create Definition entity to replace ModelInput #117

@adamhjk

Description

@adamhjk

Implement the Definition entity that replaces ModelInput with support for YAML-based storage and CEL expressions.

Key Changes

  • Create src/domain/definitions/definition.ts - Definition entity
    • Fields: id, name, tags, attributes, version, inputs (JsonSchema)
    • Support for CEL expressions in attributes: ${{ expression }}
  • Create src/domain/definitions/definition_schema.ts - Zod schema
  • Create src/infrastructure/persistence/yaml_definition_repository.ts
    • Storage: .swamp/definitions/{type}/{id}.yaml
    • Parse and preserve CEL expressions (don't evaluate on save)
  • Create src/infrastructure/persistence/yaml_evaluated_definition_repository.ts
    • Storage: .swamp/definitions-evaluated/{type}/{id}.yaml (gitignored)
    • Stores definitions with CEL expressions evaluated

Integration with Existing CEL System

  • Leverage existing src/domain/expressions/expression_evaluation_service.ts
  • Update expression context to support:
    • inputs.{param} - Access definition inputs
    • model.{name}.definition.attributes - Reference other model definitions
    • model.{name}.data.{data-name}.attributes - Reference data from other models
    • vault.get(vault_name, key) - Already supported

Acceptance Criteria

  • Definition entity supports all design doc fields
  • Repository saves/loads definitions as YAML
  • CEL expressions preserved in raw definitions
  • Evaluated definitions cached in .swamp/definitions-evaluated/
  • Integration with existing expression evaluation service
  • Unit tests for Definition entity
  • Integration test: create definition with CEL expressions, evaluate expressions

Dependencies

None - can be done in parallel with Issue #116

Files to Create

  • src/domain/definitions/definition.ts
  • src/domain/definitions/definition_schema.ts
  • src/domain/definitions/definition_id.ts
  • src/infrastructure/persistence/yaml_definition_repository.ts
  • src/infrastructure/persistence/yaml_evaluated_definition_repository.ts
  • src/domain/definitions/definition_test.ts

Files to Update

  • src/domain/expressions/expression_evaluation_service.ts - Add definition context support

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions