- W116: Schema-Description Drift rule - detects params not mentioned in tool description
- W117: Idempotency Signal rule - detects mutation tools lacking idempotency signal
- Fixed dependency confidence threshold (enabled E103, E105, E106, E107, W105)
- Enhanced normalizer: support for
oneOf/anyOf/allOf,formatfield, and arrayitemsschemas
- New
semantic-embedding.tsmodule using@xenova/transformers - Concept embeddings: USER_DATA, SENSITIVE, RETURNS_DATA, IDEMPOTENT, MUTATION
- Updated rules (E108, E112, E100, W117) to use embeddings instead of hardcoded keywords
- Removed dead code: SYNONYM_GROUPS, ABBREVIATIONS, DEFAULT_CONCRETE_NOUNS, semantic.ts
This hotfix release addresses 4 critical production bugs that were blocking public launch.
- Issue:
src/utils/package-manager.tsused__dirname, which doesn't exist in ESM modules - Impact:
syrin updateandsyrin rollbackcommands were completely broken - Fix: Replaced with ESM-compatible approach using
import.meta.urlandfileURLToPath
- Issue:
log.error()usedconsole.loginstead ofconsole.error - Impact: Error output couldn't be separated from normal output (Unix convention violation)
- Fix: Changed to properly output errors to stderr
- Issue: Tool results were added to conversation history with
role: 'assistant'instead ofrole: 'tool' - Impact: Broke multi-turn tool calling; LLM couldn't distinguish its own responses from tool outputs
- Fix:
- Updated
MessageRoletype to include'tool' - Changed all tool result messages to use correct
'tool'role
- Updated
- Issue: OpenAI provider used deprecated
functionsparameter instead of moderntools - Impact: Will fail when OpenAI removes deprecated API
- Fix:
- Migrated from
functionstotoolsparameter - Updated tool schema format to
{ type: 'function', function: {...} } - Removed legacy
function_callhandling
- Migrated from
- Init – Transport type (http/stdio) shown as checklist; no free-text input.
- Status – UI split into Local / Global; config, .env, project, and LLM providers per section; minimal styling aligned with doctor.
- Analyse – Errors and warnings numbered (CLI and CI); dependency graph edges numbered; CI uses logger for success/error.
- Zero-config –
syrin list,syrin analyse,syrin test --connectionwork with--urlor--scriptonly; no local or global config required (dev still needs config for LLM). - Config –
mcp_urlrenamed tourlinsyrin.yaml; version kept; template comments cleaned (no "v1.3.0" labels); LLM keys must be env var names only.
- Docs and README updated for new behaviour and commands.
--mcp-urlrenamed to--url- The--mcp-urlflag insyrin devhas been renamed to--urlfor consistency across all commands.
- Updated Dependencies - Upgraded all CLI dependencies to their latest versions.
- Updated README - Restructured quickstart, added demo GIFs, and improved documentation for launch.
-
Global Configuration Support - Syrin can now be used from anywhere without project-specific configuration.
syrin init --globalcreates user-wide LLM configuration at~/.syrin/syrin.yamlsyrin devworks with global config using--transportand--url/--scriptflags- Global
.envsupport at~/.syrin/.envfor shared API keys - Configuration precedence: CLI flags > Local config > Global config > Defaults
-
New
syrin statusCommand - Quick project health overview (likegit status).- Shows configuration status (local/global)
- Displays project details and LLM provider status
- Shows environment file status
- Provides suggested actions for unconfigured items
-
New
syrin configCommand Suite - Complete configuration management without editing YAML files.syrin config list- List all configuration valuessyrin config get <key>- Get a specific valuesyrin config set <key> <value>- Set a configuration valuesyrin config edit- Open config in editorsyrin config edit-env- Open .env file in editorsyrin config set-default <provider>- Set default LLM providersyrin config remove <provider>- Remove an LLM provider
-
Command Aliases - Shorter alternatives for frequently used commands.
syrin ls→syrin listsyrin doc→syrin doctorsyrin cfg→syrin config
-
Global CLI Flags - New flags available on all commands.
--quiet/-q- Minimal output (errors only), perfect for CI/CD--verbose- Verbose output for debugging
-
Improved Checkbox UX - Added hint text "SPACE to toggle, ENTER to confirm" in init prompts.
- Dev Mode Validation Details - Now shows which required parameter is missing when validation fails.
[object Object]in Init Output - Fixed logging bug that displayed object context incorrectly.- Exit Code 0 for Help - Running
syrinwith no arguments now exits with code 0 (was 1). - Duplicate Error Messages - Fixed duplicate error logging in command error handler.
- Wrong Env Source in Doctor - Fixed environment variable priority (local .env now takes precedence over global .env for local context).
- Version Banner Consistency - All commands now show version banner consistently.
- Unified Logger - Consolidated
loggerandloginto singlelogutility. - Cleaner YAML Generation - Improved whitespace handling in generated config files.
- Better Error Messages - Standardized error formatting across all commands.
- Comprehensive Documentation - Complete CLI reference with all commands, flags, and examples.
- Config File Location Changed - The configuration file has been moved from
.syrin/config.yamltosyrin.yamlat the project root. This is the first breaking change in Syrin.- When running
syrin init, the config file will now be created assyrin.yamlin the project root - Existing projects using
.syrin/config.yamlwill need to migrate their config file to the new location - The
.syrindirectory is still used for events, dev history, and data files
- When running
-
Tool-Level Structural Safety Validation (
syrin test) - New default behavior forsyrin testcommand that validates tool contracts through sandboxed execution. -
New Behavioral Error Rules:
- E500: Side Effect Detected - Tool attempts filesystem writes to project files
- E301: Output Explosion - Tool output exceeds declared size limit
- E403: Unbounded Execution - Tool execution timed out or failed to terminate
-
New Behavioral Warning Rules (W021-W023):
- W110: Weak Schema - Contract schema is too loose or doesn't match MCP tool schema
- W300: High Entropy Output - Tool output has high entropy (random, unpredictable)
- W301: Unstable Defaults - Tool behavior changes significantly with default values
-
Enhanced
syrin testCommand:- Default Mode: Tool validation (new default behavior)
- Connection Testing: Available via
--connectionflag (legacy behavior) - Options:
--tool,--strict,--json,--ci - Strict Mode:
--strictflag treats warnings as errors - JSON Output:
--jsonflag for CI integration - CI Mode:
--ciflag for CI Mode.
-
Configuration Enhancements:
- New
checksection insyrin.yamlfor tool validation configuration
- New
- Performance: Process reuse strategy significantly reduces overhead when testing many tools (100+ tools in 1-3 minutes)
- Safety: Network calls are allowed but monitored for side effects and non-determinism (does not block legitimate API calls)
- Flexibility: Supports both contract-defined tests and synthetic input generation from schemas
- Developer Experience: Clear error messages with suggestions for fixing issues
- Updated STDIO test using script - Fixed CLI test when script was passed
- Env Support for CLI - Support for multiple ENV variables using (
--env) for script in CLI - Auth Header Support for CLI - Support for multiple auth headers using (
--auth-header) for URL in CLI
- CLI Not Working After Global Install - Fixed critical issue where syrin commands produced no output when installed globally via npm.
- Static Tool Contract Analysis (
syrin analyse) - New command to perform static analysis on MCP tool contracts, catching issues before runtime. - Comprehensive Analysis Rules - 20 analysis rules (10 errors, 10 warnings) covering critical issues like missing output schemas, type mismatches, and circular dependencies.
- CI Integration Support - Added
--ciflag for continuous integration pipelines with appropriate exit codes. - JSON Output Format - Added
--jsonflag to output analysis results in JSON format. - Dependency Graph Visualization - Added
--graphflag to visualize tool dependencies. - Tool Dependency Inference - Automatic detection and analysis of implicit dependencies between MCP tools.
- ESM Main Entry Point Detection - Fixed issue where
run()function was being called when the module was imported programmatically. - Hardcoded Version in MCP Connection - Fixed issue where
syrin testalways displayed "syrin v1.0.0" instead of the actual current version.
- Event-Driven Chat Visibility - Real-time event updates in chat UI to increase visibility of testing operations and tool executions.
- Update Command - Added
syrin updatecommand to update Syrin to the latest version. - Large JSON File Saving - Added
/save-jsoncommand to save large tool result JSON files for testing and analysis.
- Code Optimizations - Moved gradient colors array outside map callback, simplified welcome message builder, and refactored version checking with centralized package name constant.
- Chat UI Performance - Revamped chat UI to eliminate lag and improve responsiveness.
- Complete CLI Toolset - Interactive commands for initialization (
syrin init), health checks (syrin doctor), protocol testing (syrin test), discovery (syrin list), and interactive development mode (syrin dev) - Multi-LLM Provider Support - Seamless integration with OpenAI, Claude (Anthropic), and Ollama, including automatic Ollama service management and model downloading
- Full MCP Protocol Support - Complete Model Context Protocol implementation with tool calling, resource discovery, prompt discovery, and protocol validation
- Safe Development Environment - Preview mode by default to prevent accidental tool execution, with optional execution mode and comprehensive event tracking for debugging
- Flexible Configuration System - YAML-based configuration with schema validation, environment variable support, and support for both HTTP and stdio transport types
- Developer Experience - Interactive chat interface, command history, tool listing, automatic server spawning, and comprehensive error handling with clear feedback
- Production Ready - TypeScript implementation with full type safety, npm package distribution, and complete documentation