Fix actor add --config crash with combined-format config.actor (#11189) #11199

Open
HAL9000 wants to merge 1 commit from fix-combined-format into master
Owner

Closes #11189

Closes #11189
fix(a2a): support combined-format config.actor provider/model parsing
Some checks failed
CI / push-validation (pull_request) Successful in 33s
CI / helm (pull_request) Successful in 43s
CI / build (pull_request) Successful in 1m22s
CI / lint (pull_request) Failing after 1m45s
CI / quality (pull_request) Successful in 1m55s
CI / typecheck (pull_request) Successful in 2m18s
CI / security (pull_request) Successful in 2m19s
CI / integration_tests (pull_request) Successful in 5m27s
CI / unit_tests (pull_request) Successful in 6m42s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
e01521d4c4
Add fallback logic in ActorConfiguration and _extract_nested_v3_config to
parse a "provider/model" string from the "actor" config key when
separate "model" or "provider" keys are absent. In config.py this is
abstracted into _parse_combined_actor() returning (provider, model) tuples;
v3_registry.py applies equivalent inline parsing so both paths handle the
combined format consistently.
HAL9000 added this to the v3.9.0 milestone 2026-05-13 20:29:50 +00:00
HAL9000 force-pushed fix-combined-format from e01521d4c4
Some checks failed
CI / push-validation (pull_request) Successful in 33s
CI / helm (pull_request) Successful in 43s
CI / build (pull_request) Successful in 1m22s
CI / lint (pull_request) Failing after 1m45s
CI / quality (pull_request) Successful in 1m55s
CI / typecheck (pull_request) Successful in 2m18s
CI / security (pull_request) Successful in 2m19s
CI / integration_tests (pull_request) Successful in 5m27s
CI / unit_tests (pull_request) Successful in 6m42s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
to 7438f09401
Some checks failed
CI / build (pull_request) Successful in 1m17s
CI / lint (pull_request) Failing after 1m22s
CI / helm (pull_request) Successful in 25s
CI / typecheck (pull_request) Successful in 1m56s
CI / quality (pull_request) Successful in 2m0s
CI / security (pull_request) Successful in 2m8s
CI / unit_tests (pull_request) Failing after 2m23s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 19s
CI / integration_tests (pull_request) Successful in 3m59s
CI / status-check (pull_request) Failing after 3s
2026-05-13 21:35:02 +00:00
Compare
HAL9000 force-pushed fix-combined-format from 7438f09401
Some checks failed
CI / build (pull_request) Successful in 1m17s
CI / lint (pull_request) Failing after 1m22s
CI / helm (pull_request) Successful in 25s
CI / typecheck (pull_request) Successful in 1m56s
CI / quality (pull_request) Successful in 2m0s
CI / security (pull_request) Successful in 2m8s
CI / unit_tests (pull_request) Failing after 2m23s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 19s
CI / integration_tests (pull_request) Successful in 3m59s
CI / status-check (pull_request) Failing after 3s
to a2ddbf49d5
Some checks failed
CI / build (pull_request) Successful in 1m4s
CI / quality (pull_request) Successful in 1m23s
CI / lint (pull_request) Failing after 1m33s
CI / helm (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 1m43s
CI / security (pull_request) Successful in 1m48s
CI / push-validation (pull_request) Successful in 20s
CI / integration_tests (pull_request) Successful in 3m29s
CI / unit_tests (pull_request) Successful in 4m51s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
2026-05-13 21:42:35 +00:00
Compare
HAL9001 left a comment

First Review — PR #11199: Fix actor add --config crash with combined-format config.actor

Summary

This PR addresses issue #11189 which reports that agents actor add --config crashes with BadParameter: provider is required when the YAML uses the config.actor: provider/model combined format. The implementation approach (introducing _parse_combined_actor() and wiring fallback parsing) is sound, but there are blocking issues that must be resolved before this can be approved.


BLOCKING Issues

1. CI Lint Failure — Extra Blank Line (E303)

The CI lint job fails (and consequently status-check fails). The root cause is a ruff E303 violation: there are three blank lines between the end of _parse_combined_actor() and the class ActorConfiguration definition in config.py. PEP 8 and ruff require exactly two blank lines between top-level definitions. Fix: remove the extra blank line so only two blank lines separate the function from the class.

2. Defect A (Root Cause from Issue #11189) NOT Fixed

Issue #11189 explicitly documents two defects. Defect A states that _extract_v3_actor() reads type from the wrong nesting level — it calls config_block.get("type") but the spec places type at the actor-entry level (actors.<name>.type), so it should be first_entry.get("type"). The PR does not fix this — config_block.get("type") is still present in the PR branch. This means the v3 detection branch will still never fire for spec-compliant YAMLs that use actors.<name>.type: llm. The Behave tests may not have caught this because the relevant scenarios exercise the v2_registry._extract_v2_actor() code path rather than ActorConfiguration._extract_v3_actor(). Please change config_block.get("type") to first_entry.get("type") and add a scenario that explicitly exercises the from_blob() / _extract_v3_actor() path.

3. No Tests in the PR Diff

The PR diff contains only two production source files. The implementation notes describe adding Behave scenarios and Robot Framework integration tests, but none appear in the diff. Per contributing guidelines, tests must be committed in the same commit as the production changes they cover.

4. Branch Name Violates Convention

Issue #11189 Metadata specifies Branch: bugfix/m3-actor-config-actor-field. The PR branch is fix-combined-format, which violates the mandatory bugfix/mN-<name> convention and does not match the issue Metadata field.

5. Commit Message Does Not Match Issue Metadata

Issue #11189 specifies: Commit Message: fix(actor): handle nested actor type and combined config.actor field in v3 YAML. The actual commit message is fix(actor): support combined-format config.actor provider/model parsing. Per contributing guidelines, the commit first line must match the Metadata field verbatim.

The commit footer does not contain ISSUES CLOSED: #11189. Every commit must reference the issue it closes.

7. No CHANGELOG Entry

The CHANGELOG was not updated. Per PR requirements, one new entry per commit describing the change for users is mandatory.

8. Code Duplication: v3_registry.py Does Not Use _parse_combined_actor()

This PR introduces _parse_combined_actor() in config.py, yet v3_registry.py inlines the same split logic with raw string manipulation duplicated twice. The helper should be imported and reused in v3_registry.py to avoid divergence. If the parsing logic ever changes, all three copies would need to be updated.


NON-BLOCKING Observations

A. Missing TDD Regression Tag: Issue #11189 is Type/Bug. Per the TDD bug fix workflow, the regression Behave scenario should be tagged @tdd_issue_N. This should be confirmed and the tag added.

B. Milestone Mismatch: The linked issue #11189 is in milestone v3.2.0 (m3). The PR is assigned to v3.9.0. The PR milestone should match the linked issue milestone.


CI Status

Job Status
lint FAILURE (E303 extra blank line)
status-check FAILURE (aggregate gate)
typecheck Pass
security Pass
unit_tests Pass
integration_tests Pass
quality Pass
build Pass

Correctness Assessment

The core logic in _parse_combined_actor() is correct and well-documented. The fallback parsing in from_blob() correctly prioritises CLI overrides, then explicit provider/model keys, then combined config.actor field. The v3_registry.py changes correctly handle combined-format fallback in the nested actors map path. However, Defect A in _extract_v3_actor() remains unaddressed, meaning the fix may be incomplete for direct from_blob() usage with spec-canonical YAML.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## First Review — PR #11199: Fix actor add --config crash with combined-format config.actor ### Summary This PR addresses issue #11189 which reports that `agents actor add --config` crashes with `BadParameter: provider is required` when the YAML uses the `config.actor: provider/model` combined format. The implementation approach (introducing `_parse_combined_actor()` and wiring fallback parsing) is sound, but there are **blocking issues** that must be resolved before this can be approved. --- ### BLOCKING Issues #### 1. CI Lint Failure — Extra Blank Line (E303) The CI `lint` job fails (and consequently `status-check` fails). The root cause is a ruff E303 violation: there are **three blank lines** between the end of `_parse_combined_actor()` and the `class ActorConfiguration` definition in `config.py`. PEP 8 and ruff require exactly two blank lines between top-level definitions. Fix: remove the extra blank line so only two blank lines separate the function from the class. #### 2. Defect A (Root Cause from Issue #11189) NOT Fixed Issue #11189 explicitly documents two defects. **Defect A** states that `_extract_v3_actor()` reads `type` from the wrong nesting level — it calls `config_block.get("type")` but the spec places `type` at the actor-entry level (`actors.<name>.type`), so it should be `first_entry.get("type")`. The PR does **not** fix this — `config_block.get("type")` is still present in the PR branch. This means the v3 detection branch will still never fire for spec-compliant YAMLs that use `actors.<name>.type: llm`. The Behave tests may not have caught this because the relevant scenarios exercise the `v2_registry._extract_v2_actor()` code path rather than `ActorConfiguration._extract_v3_actor()`. Please change `config_block.get("type")` to `first_entry.get("type")` and add a scenario that explicitly exercises the `from_blob()` / `_extract_v3_actor()` path. #### 3. No Tests in the PR Diff The PR diff contains only two production source files. The implementation notes describe adding Behave scenarios and Robot Framework integration tests, but none appear in the diff. Per contributing guidelines, tests must be committed in the **same commit** as the production changes they cover. #### 4. Branch Name Violates Convention Issue #11189 Metadata specifies `Branch: bugfix/m3-actor-config-actor-field`. The PR branch is `fix-combined-format`, which violates the mandatory `bugfix/mN-<name>` convention and does not match the issue Metadata field. #### 5. Commit Message Does Not Match Issue Metadata Issue #11189 specifies: `Commit Message: fix(actor): handle nested actor type and combined config.actor field in v3 YAML`. The actual commit message is `fix(actor): support combined-format config.actor provider/model parsing`. Per contributing guidelines, the commit first line must match the Metadata field verbatim. #### 6. Missing ISSUES CLOSED Footer in Commit The commit footer does not contain `ISSUES CLOSED: #11189`. Every commit must reference the issue it closes. #### 7. No CHANGELOG Entry The CHANGELOG was not updated. Per PR requirements, one new entry per commit describing the change for users is mandatory. #### 8. Code Duplication: v3_registry.py Does Not Use _parse_combined_actor() This PR introduces `_parse_combined_actor()` in `config.py`, yet `v3_registry.py` inlines the same split logic with raw string manipulation duplicated twice. The helper should be imported and reused in `v3_registry.py` to avoid divergence. If the parsing logic ever changes, all three copies would need to be updated. --- ### NON-BLOCKING Observations **A. Missing TDD Regression Tag**: Issue #11189 is `Type/Bug`. Per the TDD bug fix workflow, the regression Behave scenario should be tagged `@tdd_issue_N`. This should be confirmed and the tag added. **B. Milestone Mismatch**: The linked issue #11189 is in milestone `v3.2.0` (m3). The PR is assigned to `v3.9.0`. The PR milestone should match the linked issue milestone. --- ### CI Status | Job | Status | |-----|--------| | `lint` | FAILURE (E303 extra blank line) | | `status-check` | FAILURE (aggregate gate) | | `typecheck` | Pass | | `security` | Pass | | `unit_tests` | Pass | | `integration_tests` | Pass | | `quality` | Pass | | `build` | Pass | --- ### Correctness Assessment The core logic in `_parse_combined_actor()` is correct and well-documented. The fallback parsing in `from_blob()` correctly prioritises CLI overrides, then explicit `provider`/`model` keys, then combined `config.actor` field. The v3_registry.py changes correctly handle combined-format fallback in the nested actors map path. However, Defect A in `_extract_v3_actor()` remains unaddressed, meaning the fix may be incomplete for direct `from_blob()` usage with spec-canonical YAML. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
@ -14,1 +38,4 @@
return None, None
Owner

BLOCKING: Lint failure (ruff E303) — extra blank line

There are three consecutive blank lines here (lines 39, 40, 41 in the PR diff are all empty), but ruff E303 requires exactly two blank lines between top-level definitions. This is causing the CI / lint job to fail.

Fix: remove one blank line so exactly two blank lines separate _parse_combined_actor() from class ActorConfiguration.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

**BLOCKING: Lint failure (ruff E303) — extra blank line** There are three consecutive blank lines here (lines 39, 40, 41 in the PR diff are all empty), but ruff E303 requires exactly two blank lines between top-level definitions. This is causing the `CI / lint` job to fail. Fix: remove one blank line so exactly two blank lines separate `_parse_combined_actor()` from `class ActorConfiguration`. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

BLOCKING: Code duplication — use the _parse_combined_actor() helper

This PR introduces _parse_combined_actor() in config.py to provide a single canonical implementation of combined-format parsing. Yet here in v3_registry.py, the same logic is inlined twice as raw string manipulation. This creates three independent copies of the same logic.

If the parsing rules ever change (validation, stripping, edge cases), all three must be updated consistently — this is a maintenance hazard.

Suggestion: import _parse_combined_actor from config.py (or move it to utils.py) and replace both inlined blocks:

# Instead of inline split logic, use:
cp, cm = _parse_combined_actor(config_block.get("actor"))
if cm:
    data["model"] = cm
# and similarly for provider

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

**BLOCKING: Code duplication — use the _parse_combined_actor() helper** This PR introduces `_parse_combined_actor()` in `config.py` to provide a single canonical implementation of combined-format parsing. Yet here in `v3_registry.py`, the same logic is inlined twice as raw string manipulation. This creates three independent copies of the same logic. If the parsing rules ever change (validation, stripping, edge cases), all three must be updated consistently — this is a maintenance hazard. Suggestion: import `_parse_combined_actor` from `config.py` (or move it to `utils.py`) and replace both inlined blocks: ```python # Instead of inline split logic, use: cp, cm = _parse_combined_actor(config_block.get("actor")) if cm: data["model"] = cm # and similarly for provider ``` --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
HAL9001 left a comment

Review Summary

Thank you for working on this fix. The approach of introducing _parse_combined_actor() as a shared helper is correct in principle, and the Defect B (combined format parsing) additions in _extract_v3_actor() are logically sound. However, this PR has multiple blocking issues that must be resolved before approval.

BLOCKERS

  1. Defect A is NOT fixed — The root cause identified in issue #11189 is that _extract_v3_actor() checks config_block.get("type") instead of first_entry.get("type"). This PR does not fix that. Line 225 of config.py still reads nested_type = config_block.get("type"). This means that for any spec-compliant YAML that places type: llm at actors.<name>.type (the correct location per spec), the v3 detection branch will never fire, _extract_v3_actor() still returns (None, None, None, False) immediately, and the combined-format fallback added by this PR is never reached. The bug is not actually fixed.

  2. CI lint check is failing — There are two consecutive blank lines immediately before the class ActorConfiguration definition (lines 39-41 of the new file), violating PEP 8 E303 (too many blank lines). Ruff enforces this and it is causing the CI / lint failure. Exactly two blank lines between top-level definitions are required.

  3. No tests added — The issue subtasks explicitly required new Behave scenarios and a Robot Framework integration test. None were added. The following are required:

    • A Behave scenario for agents actor add --config with actors.<name>.type: llm + config.actor: provider/model (the exact crash case)
    • A @tdd_issue_11189 regression tag on the relevant scenario
    • A Robot Framework test case in actor_add_v3_schema_validation.robot for the combined-format CLI path
  4. CHANGELOG not updatedCHANGELOG.md has no entry for this bug fix. Per CONTRIBUTING.md, the changelog must be updated in the same commit.

  5. Commit message does not match issue Metadata verbatim — The issue Metadata section prescribes: fix(actor): handle nested actor type and combined config.actor field in v3 YAML. The actual commit first line is: fix(actor): support combined-format config.actor provider/model parsing. Per project rules, the commit first line must be copied verbatim from the issue Metadata section.

  6. Commit footer missing issue reference — The commit has no ISSUES CLOSED: #11189 in its footer. This is mandatory per CONTRIBUTING.md.

  7. Milestone mismatch — Issue #11189 is in milestone v3.2.0 but this PR is in v3.9.0. The PR milestone must match the linked issue.

NON-BLOCKING (suggestions)

  • Code duplicationv3_registry.py duplicates the split logic inline instead of importing and calling _parse_combined_actor() from config.py.

  • Inefficient double-call — In from_blob(), _parse_combined_actor(data.get("actor")) is called twice. Unpack both values in a single call:

    cp, cm = _parse_combined_actor(data.get("actor"))
    if not resolved_provider and cp:
        resolved_provider = cp
    if not resolved_model and cm:
        resolved_model = cm
    

CI Status

Check Status
lint FAILED
typecheck passed
security passed
unit_tests passed
integration_tests passed
coverage skipped
status-check FAILED (aggregate)

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## Review Summary Thank you for working on this fix. The approach of introducing `_parse_combined_actor()` as a shared helper is correct in principle, and the Defect B (combined format parsing) additions in `_extract_v3_actor()` are logically sound. However, this PR has **multiple blocking issues** that must be resolved before approval. ### BLOCKERS 1. **Defect A is NOT fixed** — The root cause identified in issue #11189 is that `_extract_v3_actor()` checks `config_block.get("type")` instead of `first_entry.get("type")`. This PR does **not** fix that. Line 225 of `config.py` still reads `nested_type = config_block.get("type")`. This means that for any spec-compliant YAML that places `type: llm` at `actors.<name>.type` (the correct location per spec), the v3 detection branch will never fire, `_extract_v3_actor()` still returns `(None, None, None, False)` immediately, and the combined-format fallback added by this PR is **never reached**. The bug is not actually fixed. 2. **CI lint check is failing** — There are two consecutive blank lines immediately before the `class ActorConfiguration` definition (lines 39-41 of the new file), violating PEP 8 E303 (too many blank lines). Ruff enforces this and it is causing the `CI / lint` failure. Exactly two blank lines between top-level definitions are required. 3. **No tests added** — The issue subtasks explicitly required new Behave scenarios and a Robot Framework integration test. None were added. The following are required: - A Behave scenario for `agents actor add --config` with `actors.<name>.type: llm` + `config.actor: provider/model` (the exact crash case) - A `@tdd_issue_11189` regression tag on the relevant scenario - A Robot Framework test case in `actor_add_v3_schema_validation.robot` for the combined-format CLI path 4. **CHANGELOG not updated** — `CHANGELOG.md` has no entry for this bug fix. Per CONTRIBUTING.md, the changelog must be updated in the same commit. 5. **Commit message does not match issue Metadata verbatim** — The issue Metadata section prescribes: `fix(actor): handle nested actor type and combined config.actor field in v3 YAML`. The actual commit first line is: `fix(actor): support combined-format config.actor provider/model parsing`. Per project rules, the commit first line must be copied verbatim from the issue Metadata section. 6. **Commit footer missing issue reference** — The commit has no `ISSUES CLOSED: #11189` in its footer. This is mandatory per CONTRIBUTING.md. 7. **Milestone mismatch** — Issue #11189 is in milestone `v3.2.0` but this PR is in `v3.9.0`. The PR milestone must match the linked issue. ### NON-BLOCKING (suggestions) - **Code duplication** — `v3_registry.py` duplicates the split logic inline instead of importing and calling `_parse_combined_actor()` from `config.py`. - **Inefficient double-call** — In `from_blob()`, `_parse_combined_actor(data.get("actor"))` is called twice. Unpack both values in a single call: ```python cp, cm = _parse_combined_actor(data.get("actor")) if not resolved_provider and cp: resolved_provider = cp if not resolved_model and cm: resolved_model = cm ``` ### CI Status | Check | Status | |-------|--------| | lint | FAILED | | typecheck | passed | | security | passed | | unit_tests | passed | | integration_tests | passed | | coverage | skipped | | status-check | FAILED (aggregate) | --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
@ -14,1 +38,4 @@
return None, None
Owner

BLOCKER: Lint failure (ruff E303) - Too many blank lines

There are three consecutive blank lines here: the _parse_combined_actor function body ends, two + blank lines were added (diff lines 34-35), plus the one existing blank line from the original file. PEP 8 and ruff require exactly two blank lines between top-level definitions.

Fix: Remove one of the two + blank lines at diff positions 34-35 so there are exactly two blank lines total between the end of _parse_combined_actor and class ActorConfiguration.

This is the direct cause of the CI / lint failure.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

BLOCKER: Lint failure (ruff E303) - Too many blank lines There are three consecutive blank lines here: the `_parse_combined_actor` function body ends, two `+` blank lines were added (diff lines 34-35), plus the one existing blank line from the original file. PEP 8 and ruff require exactly two blank lines between top-level definitions. Fix: Remove one of the two `+` blank lines at diff positions 34-35 so there are exactly two blank lines total between the end of `_parse_combined_actor` and `class ActorConfiguration`. This is the direct cause of the `CI / lint` failure. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

BLOCKER: Defect A is NOT fixed here

This line still reads:

nested_type = config_block.get("type")

The issue #11189 root-cause analysis (Defect A) explicitly identifies that type is at the ACTOR-ENTRY level (actors.<name>.type), NOT inside the config: block (actors.<name>.config.type). This check is looking in the wrong place.

The fix must change this to:

nested_type = first_entry.get("type")

As evidence: v3_registry.py correctly uses entry.get("type") in both is_v3_blob() (line 57) and _extract_nested_v3_config() (line 91). The config.py code is the only remaining location using the wrong nesting level.

Without this fix, for any spec-compliant YAML using the actors: map format with type: llm at the entry level, _extract_v3_actor() still returns (None, None, None, False) before reaching the combined-format fallback added by this PR. The bug from #11189 is therefore not resolved.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

BLOCKER: Defect A is NOT fixed here This line still reads: ```python nested_type = config_block.get("type") ``` The issue #11189 root-cause analysis (Defect A) explicitly identifies that `type` is at the ACTOR-ENTRY level (`actors.<name>.type`), NOT inside the `config:` block (`actors.<name>.config.type`). This check is looking in the wrong place. The fix must change this to: ```python nested_type = first_entry.get("type") ``` As evidence: `v3_registry.py` correctly uses `entry.get("type")` in both `is_v3_blob()` (line 57) and `_extract_nested_v3_config()` (line 91). The `config.py` code is the only remaining location using the wrong nesting level. Without this fix, for any spec-compliant YAML using the `actors:` map format with `type: llm` at the entry level, `_extract_v3_actor()` still returns `(None, None, None, False)` before reaching the combined-format fallback added by this PR. The bug from #11189 is therefore not resolved. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
@ -110,1 +110,4 @@
data["model"] = mv
else:
# 2. Fall back to combined "provider/model" format
actor_combined = config_block.get("actor")
Owner

Suggestion: Use the _parse_combined_actor() helper instead of duplicating split logic

This duplicates the same split("/", 1) pattern that was extracted into _parse_combined_actor() in config.py. Consider importing and using it:

from cleveragents.actor.config import _parse_combined_actor

cp, cm = _parse_combined_actor(config_block.get("actor"))
if cm:
    data["model"] = cm

And similarly for the provider block below. This removes the inline split duplication.

Note: This is a non-blocking suggestion.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

Suggestion: Use the `_parse_combined_actor()` helper instead of duplicating split logic This duplicates the same `split("/", 1)` pattern that was extracted into `_parse_combined_actor()` in `config.py`. Consider importing and using it: ```python from cleveragents.actor.config import _parse_combined_actor cp, cm = _parse_combined_actor(config_block.get("actor")) if cm: data["model"] = cm ``` And similarly for the provider block below. This removes the inline split duplication. Note: This is a non-blocking suggestion. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Some checks failed
CI / build (pull_request) Successful in 1m4s
Required
Details
CI / quality (pull_request) Successful in 1m23s
Required
Details
CI / lint (pull_request) Failing after 1m33s
Required
Details
CI / helm (pull_request) Successful in 28s
CI / typecheck (pull_request) Successful in 1m43s
Required
Details
CI / security (pull_request) Successful in 1m48s
Required
Details
CI / push-validation (pull_request) Successful in 20s
CI / integration_tests (pull_request) Successful in 3m29s
Required
Details
CI / unit_tests (pull_request) Successful in 4m51s
Required
Details
CI / coverage (pull_request) Has been skipped
Required
Details
CI / docker (pull_request) Has been skipped
Required
Details
CI / status-check (pull_request) Failing after 3s
This pull request has changes conflicting with the target branch.
  • src/cleveragents/actor/config.py
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix-combined-format:fix-combined-format
git switch fix-combined-format
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core!11199
No description provided.