Files
temp/features/actor_add_yaml_first_path.feature
freemo 62ded31c24 fix(cli): route 'agents actor add' through ActorRegistry.add() YAML-first path
Route the 'agents actor add' CLI command through ActorRegistry.add() instead
of the legacy registry.upsert_actor() path. This ensures the original YAML
text, schema_version, and compiled_metadata are preserved in the database.

Changes:
- src/cleveragents/cli/commands/actor.py: Add _load_config_text() helper that
  returns both raw text and parsed dict. Refactor add() to call registry.add()
  with the raw yaml_text and update=update_existing flag when a registry is
  available. The service fallback path (no registry) is unchanged.
- features/steps/actor_cli_steps.py: Update add command step definitions to
  mock registry.add() instead of registry.upsert_actor(). Update 'the actor
  add should pass the loaded config' assertion to verify registry.add() is
  called with a non-empty yaml_text string.
- features/steps/actor_cli_yaml_steps.py: Update add command steps to mock
  registry.add() instead of registry.upsert_actor().
- features/steps/actor_add_rich_output_steps.py: Update add command steps to
  mock registry.add() instead of registry.upsert_actor().
- robot/helper_actor_add_rich_output.py: Update helper to mock registry.add()
  instead of registry.upsert_actor().
- features/actor_add_yaml_first_path.feature: New Behave feature verifying
  the YAML-first persistence path is used by actor add.
- features/steps/actor_add_yaml_first_path_steps.py: Step definitions for
  the new YAML-first path feature.
- robot/actor_add_yaml_first_path.robot: New Robot integration tests verifying
  yaml_text is preserved and upsert_actor is not called.
- robot/helper_actor_add_yaml_first_path.py: Helper script for Robot tests.

Fixes #3426

ISSUES CLOSED: #3426
2026-04-05 21:19:40 +00:00

42 lines
1.9 KiB
Gherkin

Feature: Actor add CLI uses YAML-first persistence path
As a developer
I want `agents actor add` to route through ActorRegistry.upsert_actor() with yaml_text
So that the original YAML text, schema_version, and compiled_metadata
are preserved in the database while all CLI flags are honoured
Scenario: Actor add calls registry.upsert_actor() with raw yaml_text
Given an actor CLI runner
And I have an actor YAML-only config file
When I run actor add via registry yaml-first path
Then registry.upsert_actor() should be called with the raw yaml text
Scenario: Actor add with --update flag calls registry.upsert_actor() with update_existing
Given an actor CLI runner
And I have an actor JSON config file
When I run actor add with update flag via yaml-first path
Then registry.upsert_actor() should be called with update=True
Scenario: Actor add preserves yaml_text for YAML config files
Given an actor CLI runner
And I have an actor YAML-only config file
When I run actor add via registry yaml-first path
Then registry.upsert_actor() should receive the original yaml text content
Scenario: Actor add preserves yaml_text for JSON config files
Given an actor CLI runner
And I have an actor JSON config file
When I run actor add via registry yaml-first path
Then registry.upsert_actor() should be called with the raw yaml text
Scenario: Actor add with --set-default sets actor as default
Given an actor CLI runner
And I have an actor YAML-only config file
When I run actor add with set-default flag via yaml-first path
Then registry.upsert_actor() should be called with set_default=True
Scenario: Actor add with --option applies option overrides
Given an actor CLI runner
And I have an actor YAML-only config file
When I run actor add with option override via yaml-first path
Then registry.upsert_actor() should be called with option_overrides containing the override