Files
freemo c47e6445d0
CI / quality (pull_request) Successful in 19s
CI / lint (pull_request) Successful in 22s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 33s
CI / build (pull_request) Successful in 26s
CI / typecheck (pull_request) Successful in 1m0s
CI / integration_tests (pull_request) Successful in 4m56s
CI / unit_tests (pull_request) Successful in 15m11s
CI / docker (pull_request) Successful in 1m33s
CI / benchmark-regression (pull_request) Successful in 20m55s
CI / coverage (pull_request) Successful in 33m42s
CI / lint (push) Successful in 13s
CI / build (push) Successful in 15s
CI / quality (push) Successful in 17s
CI / security (push) Successful in 28s
CI / typecheck (push) Successful in 32s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 3m3s
CI / benchmark-publish (push) Successful in 10m8s
CI / unit_tests (push) Successful in 12m42s
CI / docker (push) Successful in 39s
CI / coverage (push) Has been cancelled
feat(actor): compile hierarchical actor configs to LangGraph
Add ActorCompiler module that translates GRAPH-type ActorConfigSchema
definitions into LangGraph NodeConfig/Edge structures with LSP binding
metadata. Includes subgraph resolution with cross-actor cycle detection,
entry/exit validation, and CompilationMetadata for diagnostics.

New files:
- src/cleveragents/actor/compiler.py: Core compiler with compile_actor()
- features/actor_compiler.feature: 13 Behave scenarios
- features/steps/actor_compiler_steps.py: Step definitions
- robot/actor_compiler.robot: 4 Robot smoke tests
- benchmarks/actor_compiler_bench.py: ASV performance benchmarks
- docs/reference/actor_compiler.md: Compilation pipeline reference

Modified:
- src/cleveragents/actor/__init__.py: Export compiler types
- vulture_whitelist.py: Whitelist new public API

ISSUES CLOSED: #158
2026-02-24 17:57:18 +00:00

98 lines
4.5 KiB
Plaintext

*** Settings ***
Documentation Smoke tests for Skill flattening, capability summaries, and plan validation
Resource ${CURDIR}/common.resource
Suite Setup Setup Test Environment
Suite Teardown Cleanup Test Environment
*** Variables ***
${HELPER} ${CURDIR}/helper_skill_flatten.py
*** Test Cases ***
Flatten Simple Skill With Tool Refs
[Documentation] Flatten a skill with 5 tool refs and verify deterministic order
${result}= Run Process ${PYTHON} ${HELPER} flatten-simple cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-simple-ok
Flatten Skill With Deep Includes
[Documentation] Flatten skill with 3 levels of includes in depth-first order
${result}= Run Process ${PYTHON} ${HELPER} flatten-deep cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-deep-ok
Flatten Skill With Wide Includes
[Documentation] Flatten skill including 10 other skills
${result}= Run Process ${PYTHON} ${HELPER} flatten-wide cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-wide-ok
Flatten Skill With Inline Tools
[Documentation] Flatten a skill with inline tools and verify keying
${result}= Run Process ${PYTHON} ${HELPER} flatten-inline cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-inline-ok
Flatten Skill With Cycle Raises Error
[Documentation] Detect cycles in include chains and report clear error path
${result}= Run Process ${PYTHON} ${HELPER} flatten-cycle cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-cycle-ok
Flatten Skill With Per-Include Overrides
[Documentation] Apply per-include overrides to included tool entries
${result}= Run Process ${PYTHON} ${HELPER} flatten-include-overrides cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-include-overrides-ok
Flatten Skill Rejects Non-Overridable Fields
[Documentation] Reject overrides on non-overridable fields (name, source_skill, is_inline)
${result}= Run Process ${PYTHON} ${HELPER} flatten-non-overridable cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-non-overridable-ok
Compute Capability Summary
[Documentation] Compute capability summary with diverse inline tools
${result}= Run Process ${PYTHON} ${HELPER} capability-summary cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-capability-summary-ok
Tools Method Returns Entries And Summary
[Documentation] SkillRegistry.tools() returns both entries and summary
${result}= Run Process ${PYTHON} ${HELPER} tools-method cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-tools-method-ok
Validate Plan With Valid Skills
[Documentation] validate_plan with a valid plan returns empty error list
${result}= Run Process ${PYTHON} ${HELPER} validate-plan-ok cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-validate-plan-ok
Validate Plan With Missing Skill
[Documentation] validate_plan reports error for missing skill
${result}= Run Process ${PYTHON} ${HELPER} validate-plan-missing cwd=${WORKSPACE}
Log ${result.stdout}
Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} flatten-validate-plan-missing-ok