• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 19064108888
51%

Build:
DEFAULT BRANCH: main
Ran 04 Nov 2025 09:37AM UTC
Jobs 1
Files 341
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 Nov 2025 09:32AM UTC coverage: 48.206% (+0.5%) from 47.744%
19064108888

push

github

web-flow
vMCP: Implement composite tools workflow engine (#2439)

* Implement vMCP composite tools workflow engine

Implements stacklok/stacklok-epics#149 - Phase 2 basic workflow engine
for Virtual MCP Server that orchestrates multi-step operations across
multiple backend MCP servers.

Core Features:
- Sequential workflow execution with dependency tracking
- Template expansion using Go text/template for dynamic arguments
- Support for .params.* and .steps.*.output variable references
- Router integration for tool calls to backend servers
- Comprehensive error handling (abort/continue/retry strategies)
- Conditional execution support
- Retry logic with exponential backoff
- Timeout management at workflow and step levels

Security Hardening:
- Template expansion depth limit (100 levels)
- Template output size limit (10 MB)
- Maximum workflow steps limit (100 steps)
- Retry count capping (10 retries max)
- Safe template function set (json, quote only)
- Thread-safe context management
- Circular dependency detection
- No sensitive data in error messages

Test coverage: 85.9% with compact, elegant test helpers and
comprehensive security tests for DoS protection and injection attempts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Add `te` to codespell's ignorefile

Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>

* Improve workflow engine retry logic and documentation

Address review feedback by:

1. Clarify Clone() documentation: Update docstring to accurately
   describe that it performs a shallow copy of maps, not a deep copy.
   This is sufficient for the current use case (testing/validation).

2. Replace manual exponential backoff with backoff library: Refactor
   retry logic to use github.com/cenkalti/backoff/v5, which is already
   used elsewhere in the codebase. This provides:
   - Standard exponential backoff algorithm
   - Built-in max interval capping (60x initial delay)
   - Con... (continued)

502 of 600 new or added lines in 4 files covered. (83.67%)

14 existing lines in 1 file now uncovered.

21756 of 45131 relevant lines covered (48.21%)

37.48 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
98.28
pkg/vmcp/composer/workflow_context.go
7
77.42
pkg/vmcp/composer/workflow_errors.go
10
91.74
pkg/vmcp/composer/template_expander.go
79
76.2
pkg/vmcp/composer/workflow_engine.go

Uncovered Existing Lines

Lines Coverage ∆ File
14
54.74
-10.53% pkg/secrets/keyring/keyctl_linux.go
Jobs
ID Job ID Ran Files Coverage
1 19064108888.1 04 Nov 2025 09:37AM UTC 341
48.21
GitHub Action Run
Source Files on build 19064108888
  • Tree
  • List 341
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #19064108888
  • 905d909c on github
  • Prev Build on main (#19063319244)
  • Next Build on main (#19064659256)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc