Commit Graph

733 Commits

Author SHA1 Message Date
freemo 093204a703 feat(resource): add fs-mount and fs-directory types 2026-02-17 20:07:31 -05:00
brent.edwards 3598924d6f test(cov): add skill CLI and service coverage scenarios
Add 19 behave scenarios covering uncovered paths in skill_service.py
and cli/commands/skill.py to bring coverage above the 97% threshold:
- show with includes, MCP servers, agent_skills, inline tools, Referenced By
- tools with mixed MCP/inline sources
- list with non-local namespaces
- remove without --yes (abort path)
- update with dependent skills (Affected Actors panel)
- service edge cases: skill_count, empty names, source filtering, no config_path
- add with missing-description YAML (validation failure)
2026-02-18 01:03:11 +00:00
brent.edwards 686c834602 feat: merge branch 'master' into feature/m3-tool-domain-robot 2026-02-17 17:02:27 -08:00
brent.edwards b528cde8e7 feat: merge branch 'master' into feature/m1-persistence-tests 2026-02-18 00:43:28 +00:00
brent.edwards 60d10cef7c Merge branch 'master' into feature/m1-cli-tests 2026-02-18 00:42:19 +00:00
brent.edwards c8fa6f716d style(ruff-format): ruff format run
One file repaired.
2026-02-18 00:39:41 +00:00
brent.edwards 1fbc062b48 style(format): 1 file reformatted 2026-02-18 00:34:44 +00:00
brent.edwards 9e9f229b3a fix(test): commit edge row so delete step sees it in its own session
The "Deleting a resource with edges is rejected" scenario was failing
because the ResourceEdgeModel row was flushed but never committed.
Since ResourceRepository.delete() obtains its own session from the
factory, the uncommitted edge was invisible and ResourceHasEdgesError
was never raised.
2026-02-18 00:28:29 +00:00
brent.edwards b1c011702f feat: merge branch 'master' into feature/m3-skill-domain-robot 2026-02-18 00:21:04 +00:00
CoreRasurae 47cad3c77b feat(session): add session persistence and repositories 2026-02-18 00:10:15 +00:00
brent.edwards ea7fcc0ba0 fix(test): resolve AmbiguousStep collision, invalid ULIDs, and edge commit
Three issues prevented the behave suite from running:

1. plan_persistence_steps.py and plan_repository_steps.py both defined
   @then('the retrieved plan description should be "..."'), causing an
   AmbiguousStep error that broke all ~50 feature files. Renamed the
   persistence step to "the persisted plan description should be".

2. The three-level hierarchy scenario used plan IDs containing O, I,
   and L which are excluded from the ULID charset. Replaced with valid
   characters (O->0, I->0, L->K).

3. resource_repository_steps.py flushed but never committed the edge
   row, so the delete method's separate session could not see it.
2026-02-18 00:09:56 +00:00
brent.edwards bd647d58cf fix(resource_repository_steps.py): add missing commit() statement 2026-02-18 00:04:09 +00:00
brent.edwards d950d48aa9 fix(resource_repository_steps.py): add missing commit() statement 2026-02-18 00:00:22 +00:00
brent.edwards 2840514729 feat: Merge branch 'master' into feature/m1-resource-db-robot-tests 2026-02-17 15:59:22 -08:00
brent.edwards d24079f129 fix(resource_repository_steps.py): add missing commit() statement 2026-02-17 23:58:10 +00:00
brent.edwards 6c7bcab01e feat: merge branch 'master' into feature/m3-session-domain-robot 2026-02-17 15:56:13 -08:00
brent.edwards 9db88a9541 fix(test): commit edge row so delete step sees it in its own session
The "Deleting a resource with edges is rejected" scenario was failing
because the ResourceEdgeModel row was flushed but never committed.
Since ResourceRepository.delete() obtains its own session from the
factory, the uncommitted edge was invisible and ResourceHasEdgesError
was never raised.
2026-02-17 23:38:45 +00:00
brent.edwards cdbd0bdd23 feat: merge branch 'master' into feature/m3-skill-cli 2026-02-17 22:45:44 +00:00
brent.edwards da40bff33d fix(test): commit edge row so delete step sees it in its own session
The "Deleting a resource with edges is rejected" scenario was failing
because the ResourceEdgeModel row was flushed but never committed.
Since ResourceRepository.delete() obtains its own session from the
factory, the uncommitted edge was invisible and ResourceHasEdgesError
was never raised.
2026-02-17 22:26:38 +00:00
brent.edwards 3d2cd05f56 test(tool): add robot tool model smoke tests 2026-02-17 21:14:46 +00:00
brent.edwards 5d2e70cff0 test(db): add resource registry robot smoke test 2026-02-17 21:07:54 +00:00
brent.edwards b9984cac57 Merge branch 'master' into feature/m3-actor-schema-examples 2026-02-17 12:58:19 -08:00
brent.edwards 5f77dd92cd build(merge): merge with master 2026-02-17 20:57:37 +00:00
brent.edwards bc5fa83d06 Merge branch 'master' into feature/m3-actor-schema-examples 2026-02-17 12:41:17 -08:00
brent.edwards 49362381bd Merge branch 'master' into feature/m3-skill-cli 2026-02-17 12:37:17 -08:00
brent.edwards 4f32daa740 test(session): add robot session model smoke tests 2026-02-17 20:33:53 +00:00
CoreRasurae 798db9088e feat(tool): add tool registry persistence 2026-02-17 20:28:20 +00:00
brent.edwards f912a136b7 test(persistence): add plan/action persistence suites 2026-02-17 20:25:12 +00:00
brent.edwards b8d2bfe252 test(cli): expand lifecycle command coverage 2026-02-17 20:01:18 +00:00
brent.edwards f0815dd126 test(skill): add robot skill resolver smoke tests 2026-02-17 19:58:15 +00:00
brent.edwards 7538add6bb fix: merge with master to fix lint 2026-02-17 18:45:55 +00:00
CoreRasurae ef905baff6 test(cov): Fix coverage test failures 2026-02-17 16:40:18 +00:00
aditya c562557da8 feat(cli): add skill commands 2026-02-17 14:44:40 +00:00
khyari hamza 46f697bd95 fix(test): add temp directory and DB bootstrap to project list scenario
The 'Test project list command with no projects' scenario was missing a
Given step to set up a writable working directory. Without it, the
container fell back to CWD/.cleveragents/db.sqlite which could not be
opened (directory did not exist), causing sqlite3.OperationalError.

- Add 'Given I have a temporary working directory' to the scenario
- Bootstrap the SQLite schema in the When step so the ns_projects table
  exists for the empty-list query
2026-02-17 14:40:16 +00:00
aditya 6a84132078 fix(actor): fix actor schema validation and tests
Fix issues identified during test execution:

- Improve name validation to reject multiple slashes and empty parts
- Fix conditional routing YAML to include all exit nodes
- Fix QuotedString parse type to standard quoted format
- Fix line length in error message (split across lines)
- All 47 Behave scenarios pass (0 failures)
- All Robot Framework integration tests pass (283 passed, 3 skipped)
- All ASV benchmarks execute successfully

Part 12 (bugfix) of C1.schema implementation.
2026-02-17 14:31:11 +00:00
aditya 1049634d0d test(actor): add Behave step definitions for actor schema
Add step definitions for 50+ test scenarios:

- Given steps: YAML templates for LLM/TOOL/GRAPH actors and invalid configs
- When steps: Schema validation from string/file and YAML I/O
- Then steps: Assertions for validation, fields, collections, and errors
- Test data: Minimal and complex configurations for all scenarios
- Full coverage: All actor types, graph topologies, and error cases

Part 8 of C1.schema implementation (Actor YAML Schema Models).
2026-02-17 13:43:07 +00:00
aditya 9ca1ceea49 test(actor): add comprehensive Behave scenarios for actor schema
Add 50+ Behave test scenarios covering all validation rules:

Valid Scenarios (20):
- LLM actors (minimal, with prompt, tools, memory, context)
- TOOL actors (minimal, inline definitions)
- GRAPH actors (linear, conditional, subgraphs)
- All example YAML files (simple_llm, llm_with_tools, etc.)
- Context views (strategist, executor, reviewer, full)
- Memory configurations
- Environment variables

Invalid Name Scenarios (4):
- Missing namespace
- Multiple slashes
- Empty namespace
- Empty name

Invalid LLM/TOOL/GRAPH Scenarios (7):
- LLM without model
- TOOL without tools
- TOOL with empty tools list
- GRAPH without model
- GRAPH without route

Graph Topology Validation (6):
- Duplicate node IDs
- Invalid entry node
- Invalid exit nodes
- Invalid edge references (from_node, to_node)
- Cyclic graphs

Tool/Node Validation (3):
- Inline tool without namespace
- Invalid parameter names
- Invalid node ID formats

Additional Scenarios (10):
- YAML I/O (save/reload, missing files)
- Edge priorities
- Memory configurations (disabled, limits, summarization)

Part 7 of C1.schema implementation (Actor YAML Schema Models).
2026-02-17 13:34:48 +00:00
khyari hamza 4d63b5af7e fix(test): correct project list scenario that expected abort on empty db
The 'Test project list command with no database' scenario asserted the
command should abort, but the DI container creates a default SQLite DB
so list_projects() returns an empty list and exits 0 with 'No projects
found'.  Update the scenario to match the actual (correct) behavior.
2026-02-17 13:19:06 +00:00
aditya 6d7b759f25 style(skill): apply ruff auto-formatting to skill schema files 2026-02-17 10:13:19 +00:00
aditya 08ad4ea683 Merge branch 'master' into feature/m3-skill-schema 2026-02-17 09:57:49 +00:00
Jeffrey Phillips Freeman 4dc05051dd feat(cli): add project commands (core) 2026-02-16 23:56:55 -05:00
Jeffrey Phillips Freeman 0c6ed1c709 feat(repo): add project repositories 2026-02-16 23:50:59 -05:00
brent.edwards 122af46305 fix(tests): resolve unit test and benchmark failures
- Fix project_repository_steps session mismatch: use shared session
  for repos so context.pr_session.commit() commits flushed data
- Fix cli_format_bench setup/teardown to accept fmt parameter for
  parameterized ASV benchmarks
- Fix plan_model_bench PlanPhase.APPLIED -> PlanPhase.APPLY
- Fix benchmark idempotency: use batch counters to generate unique IDs
  across repeated ASV iterations (plan_phase_migration_bench,
  project_migration_bench, resource_registry_migration_bench)
- Fix uow_lifecycle_bench FK constraint by reusing pre-seeded action
- Fix plan_lifecycle_persistence_bench to create fresh plan per iteration
2026-02-17 02:24:35 +00:00
brent.edwards 7ddd99b07d chore(merge): integrate master into feature/q0-min-coverage
Resolve three merge conflicts from master integration:

- benchmarks/coverage_report_bench.py: remove duplicate PYPROJECT_PATH
  constant (already defined below the conflict region)
- noxfile.py: combine HEAD's os.makedirs('build') guard with master's
  resolved PYTHONPATH (Path('src').resolve())
- implementation_plan.md: take master for completed Q0-min-ci block,
  preserve HEAD's in-progress Q0-min-coverage state, adopt master's
  Q0-Advanced consolidation (no standalone commits)
2026-02-17 00:56:43 +00:00
Jeffrey Phillips Freeman 1fb91cba28 refactor(plan): remove legacy plan persistence 2026-02-17 00:38:33 +00:00
Jeffrey Phillips Freeman d0f265ef62 feat(service): persist plan lifecycle via repositories 2026-02-17 00:37:53 +00:00
Jeffrey Phillips Freeman f7d2f63ab8 feat(cli): add resource commands (core) 2026-02-16 16:46:54 -05:00
Jeffrey Phillips Freeman 36c571db83 feat(repo): add resource repositories 2026-02-16 21:35:54 +00:00
freemo 983eee7a37 Fix: Fixed failing unit tests due to outdated behave version and alembic typo, and other fixes. 2026-02-16 14:21:06 -05:00
Jeffrey Phillips Freeman e273b52769 feat(db): add projects and project links tables 2026-02-16 12:18:51 -05:00