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
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
Implement the Definition entity that replaces ModelInput with support for YAML-based storage and CEL expressions.
Key Changes
src/domain/definitions/definition.ts- Definition entityid,name,tags,attributes,version,inputs(JsonSchema)${{ expression }}src/domain/definitions/definition_schema.ts- Zod schemasrc/infrastructure/persistence/yaml_definition_repository.ts.swamp/definitions/{type}/{id}.yamlsrc/infrastructure/persistence/yaml_evaluated_definition_repository.ts.swamp/definitions-evaluated/{type}/{id}.yaml(gitignored)Integration with Existing CEL System
src/domain/expressions/expression_evaluation_service.tsinputs.{param}- Access definition inputsmodel.{name}.definition.attributes- Reference other model definitionsmodel.{name}.data.{data-name}.attributes- Reference data from other modelsvault.get(vault_name, key)- Already supportedAcceptance Criteria
.swamp/definitions-evaluated/Dependencies
None - can be done in parallel with Issue #116
Files to Create
src/domain/definitions/definition.tssrc/domain/definitions/definition_schema.tssrc/domain/definitions/definition_id.tssrc/infrastructure/persistence/yaml_definition_repository.tssrc/infrastructure/persistence/yaml_evaluated_definition_repository.tssrc/domain/definitions/definition_test.tsFiles to Update
src/domain/expressions/expression_evaluation_service.ts- Add definition context support