EasySkills 4.0.3
EasySkills 4.0.3
A polish release hardening the MCP Gateway, the Windows WebUI backend, and
the contract test suite. All changes are backward-compatible. All 120 Python
security/contract tests and all Go unit and end-to-end routing tests pass.
MCP Gateway: Config Hot-Reload
- The
servecommand now polls the config file for changes every 2 seconds
using a SHA-256 content hash and calls the newRouter.ReloadAPI on
change, updating downstream connections and tool registrations without
restarting the process.
MCP Gateway: Core Improvements
Router.ReloadAPI. Adds, removes, and reconfigures downstream servers
in-place while the gateway is running. Servers whose config has not changed
are reused unchanged; removed servers are cleanly shut down.- Tool-name deduplication.
resolveToolNameresolves the clean original
name first and falls back to a namespacedserver__toolform only on
collision, then appends a counter for further collisions. Previously all
names were namespaced unconditionally. - Rollback on discover error. Partially registered tools are removed from
the routing table whenListToolspagination fails mid-stream, preventing
phantom tool routes. - Input/output schema validation.
validateToolDefinitionrejects tools
whoseinputSchemaoroutputSchemais not a JSON object, preventing
routing of tools that downstream clients cannot safely introspect. downstream.cfgfield. Each active session now stores its originating
ServerConfigsoReloadcan detect unchanged servers and skip
reconnection.- Process resource cleanup (Windows).
Test-MCPGatewayinwebui.ps1
now wraps the helper process in afinallyblock that callsDispose(),
preventing handle leaks.
Windows WebUI (webui.ps1)
- MCP version integer check.
Test-MCPConfigpreviously accepted
floating-pointversionvalues (e.g.1.0) as valid. The check now
requires a strict[int]or[long], matching the JSON schema intent. - Historical-target cleanup.
Remove-InstructionsFromOnefalls back to
the instruction state file for custom Agent paths that were removed from the
current configuration after EasySkills wrote instructions to them, ensuring
bulk cleanup reaches all previously managed targets.
Validation
- 2 new Python contract tests cover the PowerShell MCP version integer check
and the historical-target cleanup path inRemove-InstructionsFromOne. - 2 new Go unit tests cover
resolveToolNamecollision semantics and
validateToolDefinitionschema rejection. - 1 new Go integration test (
TestGatewayReload) exercises the full
Router.Reloadlifecycle: config-unchanged fast-path, tool-timeout change,
server addition, and server removal.