Releases: syrin-labs/cli
Releases · syrin-labs/cli
v1.5.0
What's Changed
New Features
- W116: Schema-Description Drift rule - detects params not mentioned in tool description
- W117: Idempotency Signal rule - detects mutation tools lacking idempotency signal
Analysis Engine Improvements
- Fixed dependency confidence threshold (enabled E103, E105, E106, E107, W105)
- Enhanced normalizer: support for
oneOf/anyOf/allOf,formatfield, and arrayitemsschemas
Embedding-Based Semantic Analysis
- 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
v1.4.3
What's Changed
Critical Bug Fixes
This hotfix release addresses 4 critical production bugs that were blocking public launch.
1. ESM Compatibility - __dirname Error
- 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
2. Logger Output Stream
- 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
3. Tool Result Conversation Role
- 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
v1.4.2
What's Changed
Improvements
- 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.
Documentation
- Docs and README updated for new behaviour and commands.
v1.4.1
What's Changed?
Breaking Changes
--mcp-urlrenamed to--url- The--mcp-urlflag insyrin devhas been renamed to--urlfor consistency across all commands.
Improvements
- Updated Dependencies - Upgraded all CLI dependencies to their latest versions.
- Updated README - Restructured quickstart, added demo GIFs, and improved documentation for launch.
v1.4.0
Features
-
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--mcp-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.
Bug Fixes
- 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).
v1.3.2
What's Changed
Breaking Changes
- 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.
Features
- Tool-Level Structural Safety Validation (
syrin test)** - New default behavior forsyrin testcommand that validates tool contracts through sandboxed execution. - New Behavioral Error Rules
- New Behavioral Warning Rules
- Enhanced
syrin testCommand - Configuration Enhancements
Improvements
- 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
v1.2.2
v1.2.2
Bug Fixes
- Updated STDIO test using script - Fixed CLI test when script was passed
Features
- 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
v1.2.1
v1.2.1
Bug Fixes (Critical)
- CLI Not Working After Global Install - Fixed critical issue where syrin commands produced no output when installed globally via npm.
v1.2.0
v1.2.0
Features
- 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.
Bug Fixes
- 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.
v1.1.0
v1.1.0
Features
- 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.
Optimizations
- Code Optimizations - Moved gradient colors array outside map callback, simplified welcome message builder, and refactored version checking with centralized package name constant.
UI
- Chat UI Performance - Revamped chat UI to eliminate lag and improve responsiveness.