f9c308c541
Created src/cleveragents/shared/output_format.py - a new shared module with format_data() function that provides JSON/YAML/plain/table serialization without any CLI dependencies. Fixed reverse dependency in plan_apply_service.py - changed import from cleveragents.cli.formatting to cleveragents.shared.output_format (the most critical architectural violation: Application layer importing from Presentation layer). Added .importlinter configuration file with rules to enforce: - No Application->Presentation (CLI) reverse dependencies - CLI->Application boundary violations (with current exceptions documented) Added import-linter>=2.0 to dev dependencies in pyproject.toml. Added BDD feature file features/a2a_boundary_enforcement.feature with 10 scenarios testing the boundary enforcement and step definitions. ISSUES CLOSED: #9962
42 lines
2.3 KiB
Plaintext
42 lines
2.3 KiB
Plaintext
[importlinter]
|
|
root_package = cleveragents
|
|
include_external_packages = True
|
|
|
|
[importlinter:contract:cli-no-application-direct]
|
|
name = CLI must not import Application services directly
|
|
type = forbidden
|
|
source_modules =
|
|
cleveragents.cli
|
|
forbidden_modules =
|
|
cleveragents.application.services
|
|
ignore_imports =
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.plan_apply_service
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.plan_lifecycle_service
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.plan_service
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.project_service
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.execute_phase_context_assembler
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.llm_actors
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.plan_executor
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.strategy_actor
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.plan_preflight_guardrail
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.plan_resume_service
|
|
cleveragents.cli.commands.plan -> cleveragents.application.services.decision_service
|
|
cleveragents.cli.commands.plan -> cleveragents.application.container
|
|
cleveragents.cli.commands.context -> cleveragents.application.services.context_service
|
|
cleveragents.cli.commands.context -> cleveragents.application.services.project_service
|
|
cleveragents.cli.commands.context -> cleveragents.application.container
|
|
cleveragents.cli.commands.resource -> cleveragents.application.services.resource_registry_service
|
|
cleveragents.cli.commands.resource -> cleveragents.application.container
|
|
cleveragents.cli.commands.skill -> cleveragents.application.services.skill_service
|
|
cleveragents.cli.commands.skill -> cleveragents.application.services.config_service
|
|
cleveragents.cli.commands.skill -> cleveragents.application.container
|
|
cleveragents.cli.commands.invariant -> cleveragents.application.services.invariant_service
|
|
|
|
[importlinter:contract:application-no-presentation]
|
|
name = Application layer must not import from Presentation (CLI) layer
|
|
type = forbidden
|
|
source_modules =
|
|
cleveragents.application
|
|
forbidden_modules =
|
|
cleveragents.cli
|