@syrin/cli 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,99 +1,131 @@
1
1
  # Syrin
2
2
 
3
- ![Syrin Logo](/assets/syrin-logo-dark-bg.png)
3
+ ![Syrin Logo](https://github.com/Syrin-Labs/cli/raw/main/assets/syrin-logo-dark-bg.png)
4
4
 
5
- [![npm version](https://badge.fury.io/js/%40syrin%2Fsyrin.svg)](https://badge.fury.io/js/%40syrin%2Fsyrin) [![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
5
+ [![npm version](https://badge.fury.io/js/%40syrin%2Fcli.svg)](https://www.npmjs.com/package/@syrin/cli) [![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.12.0-brightgreen)](https://nodejs.org/)
6
6
 
7
- **Syrin is a runtime intelligence system for MCP servers.**
7
+ ## Stop Silent Failures in AI Tool Calls
8
8
 
9
- It helps developers **see, validate, and reason about MCP execution** before systems reach production.
9
+ Your AI agent just called the same tool 47 times with identical parameters.
10
+ Your logs look fine. You're silently burning $200 in tokens.
10
11
 
11
- Documentation: [https://docs.syrin.dev](https://docs.syrin.dev)
12
+ **Syrin catches these failures before production.**
12
13
 
13
14
  ---
14
15
 
15
- ## The Problem
16
+ ## What Is This?
16
17
 
17
- Building MCP servers today usually looks like this:
18
+ Syrin is a development toolkit for [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) servers the standard way AI agents call external tools.
18
19
 
19
- 1. Define tools and prompts
20
- 2. Connect an LLM
21
- 3. Run the server
22
- 4. Hope execution behaves as expected
20
+ **Without Syrin:**
23
21
 
24
- When things go wrong:
22
+ ```txt
23
+ Tool called 47x → No visibility
24
+ $200 burned → Silent failure
25
+ Logs look "fine" → Debug for hours
26
+ ```
25
27
 
26
- - Tools are called for unclear reasons
27
- - Behaviour changes between runs
28
- - Debugging relies on logs and guesswork
29
- - Contract issues surface only after failures
28
+ **With Syrin:**
30
29
 
31
- Most problems are discovered **after** deployment.
30
+ ```txt
31
+ Loop detected at call #3 → Execution halted
32
+ Full event trace → See exactly what happened
33
+ Contract validated → Catch issues before runtime
34
+ ```
32
35
 
33
36
  ---
34
37
 
35
- ## Installation
38
+ ## What Syrin Catches
36
39
 
37
- ### Quick start
40
+ **Tool Loops** — Model proposes the same tool repeatedly with no progress
38
41
 
39
- ```bash
40
- npx @syrin/cli init
41
- ```
42
+ **Wrong Tool Selection** — Similar names, overlapping schemas, ambiguous descriptions cause silent misbehavior
42
43
 
43
- ### Global install
44
+ **Silent Failures** — Tool throws an error but execution continues with broken state
44
45
 
45
- ```bash
46
- npm install -g @syrin/cli
47
- ```
46
+ **Contract Mismatches** — Input/output schemas don't align between chained tools
48
47
 
49
- ### Local install (recommended for CI)
48
+ **Hidden Dependencies** Tools assume state that doesn't exist
50
49
 
51
- ```bash
52
- npm install @syrin/cli
53
- ```
50
+ Documentation: [https://docs.syrin.dev](https://docs.syrin.dev)
54
51
 
55
- Requirements:
52
+ ---
56
53
 
57
- - Node.js 18
58
- - npm ≥ 9
54
+ ## See It In Action
55
+
56
+ <table>
57
+ <tr>
58
+ <td width="33%"><strong>syrin analyse</strong><br/>Catch contract issues</td>
59
+ <td width="33%"><strong>syrin dev</strong><br/>Interactive development</td>
60
+ <td width="33%"><strong>syrin test</strong><br/>Sandboxed tool testing</td>
61
+ </tr>
62
+ <tr>
63
+ <td><img src="https://github.com/Syrin-Labs/cli/raw/main/assets/demo/syrin-analyse/analyse.gif" width="280" alt="syrin analyse demo"/></td>
64
+ <td><img src="https://github.com/Syrin-Labs/cli/raw/main/assets/demo/syrin-dev/dev.gif" width="280" alt="syrin dev demo"/></td>
65
+ <td><img src="https://github.com/Syrin-Labs/cli/raw/main/assets/demo/syrin-test/test_tool.gif" width="280" alt="syrin test demo"/></td>
66
+ </tr>
67
+ <tr>
68
+ <td width="33%"><strong>syrin init</strong><br/>Project setup</td>
69
+ <td width="33%"><strong>syrin list</strong><br/>Inspect tools</td>
70
+ <td width="33%"><strong>syrin test --connection</strong><br/>Connection test</td>
71
+ </tr>
72
+ <tr>
73
+ <td><img src="https://github.com/Syrin-Labs/cli/raw/main/assets/demo/syrin-init/init.gif" width="280" alt="syrin init demo"/></td>
74
+ <td><img src="https://github.com/Syrin-Labs/cli/raw/main/assets/demo/syrin-list/list.gif" width="280" alt="syrin list demo"/></td>
75
+ <td><img src="https://github.com/Syrin-Labs/cli/raw/main/assets/demo/syrin-test/test_connection.gif" width="280" alt="syrin test --connection demo"/></td>
76
+ </tr>
77
+ </table>
59
78
 
60
79
  ---
61
80
 
62
- ## The Syrin Way
81
+ ## Try It Now
82
+
83
+ ```bash
84
+ # No install needed — run directly
85
+ npx @syrin/cli analyse --transport http --url http://localhost:8000/mcp
86
+ ```
87
+
88
+ Or install globally:
63
89
 
64
- Syrin changes the workflow.
90
+ ```bash
91
+ npm install -g @syrin/cli
65
92
 
66
- Instead of guessing how MCP behaves, you **inspect and validate it explicitly**.
93
+ syrin init --global
94
+ syrin doctor # Check your environment
95
+ syrin analyse --transport http --url http://localhost:8000/mcp # Analyze an MCP server
96
+ syrin dev --exec --transport http --url http://localhost:8000/mcp # Interactive dev mode
97
+ ```
67
98
 
68
- **Before:**
99
+ Or initialize a project with local config:
69
100
 
70
- ```text
71
- Write tools → Connect LLM → Run server → Debug via logs
101
+ ```bash
102
+ npx @syrin/cli init
103
+ syrin doctor
104
+ syrin analyse
72
105
  ```
73
106
 
74
- **With Syrin:**
107
+ **Want to try with a sample server?** Clone the repo and use the included [example MCP server](./examples/demo-mcp-py/):
75
108
 
76
- ```text
77
- Define tools
78
- Analyse contracts
79
- Validate protocol
80
- Inspect behaviour interactively
81
- → Enable execution with confidence
109
+ ```bash
110
+ git clone https://github.com/Syrin-Labs/cli.git && cd cli/examples/demo-mcp-py
111
+ python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt
112
+ python server.py --mode http --port 8000 &
113
+ npx @syrin/cli analyse --transport http --url http://localhost:8000/mcp
82
114
  ```
83
115
 
84
- Syrin does not replace MCP.
85
- It makes MCP systems understandable and testable.
116
+ Requirements: Node.js >= 20.12, npm >= 9
86
117
 
87
118
  ---
88
119
 
89
- ## What Syrin Does
120
+ ## Core Commands
90
121
 
91
- - Validates MCP protocol compliance
92
- - Analyses tool contracts statically
93
- - Lets you interact with MCP servers using real LLMs
94
- - Shows which tools are proposed and why
95
- - Prevents accidental execution by default
96
- - Surfaces configuration and contract errors early
122
+ | Command | What It Does |
123
+ |---------|--------------|
124
+ | `syrin analyse` | Static analysis catches contract issues before runtime |
125
+ | `syrin dev` | Interactive mode see exactly what your LLM proposes |
126
+ | `syrin test` | Contract testing — validate tools in sandboxed execution |
127
+ | `syrin doctor` | Environment check — validate config and connections |
128
+ | `syrin list` | Inspect tools, resources, and prompts from your server |
97
129
 
98
130
  ---
99
131
 
@@ -115,7 +147,7 @@ syrin config setup --global
115
147
  syrin config edit-env --global
116
148
 
117
149
  # Use Syrin from any directory
118
- syrin dev --exec --transport http --mcp-url http://localhost:8000/mcp
150
+ syrin dev --exec --transport http --url http://localhost:8000/mcp
119
151
  ```
120
152
 
121
153
  ### Configuration Management
@@ -135,133 +167,82 @@ See the [Configuration Guide](docs/Commands/syrin-config.md) for more details.
135
167
 
136
168
  ## Key Capabilities
137
169
 
138
- ### Static Tool Contract Analysis (`syrin analyse`)
170
+ ### `syrin analyse` Find Problems Before They Hit Production
139
171
 
140
- LLMs rely entirely on tool contracts.
141
- If contracts are vague or incomplete, behaviour becomes unreliable.
172
+ **The Problem:** Your LLM picks the wrong tool, or calls tools with missing parameters. You only find out after deployment when users report broken behavior.
142
173
 
143
- `syrin analyse` inspects:
144
-
145
- - Tool definitions
146
- - Parameter schemas
147
- - Description clarity
148
- - Implicit dependencies between tools
149
-
150
- This catches issues **before runtime**.
174
+ **The Solution:** Static analysis of your tool contracts catches issues before any code runs.
151
175
 
152
176
  ```bash
153
- syrin analyse
177
+ syrin analyse # Check all tool contracts
178
+ syrin analyse --ci # Exit code 1 on errors (for CI pipelines)
179
+ syrin analyse --strict # Treat warnings as errors
154
180
  ```
155
181
 
156
- This is especially useful in CI:
157
-
158
- ```bash
159
- syrin analyse --ci
160
- ```
182
+ **What it catches:**
183
+ - Vague or missing tool descriptions
184
+ - Parameters without descriptions (LLMs guess wrong)
185
+ - Overlapping tools that confuse model selection
186
+ - Schema mismatches between chained tools
187
+ - Circular dependencies
161
188
 
162
189
  ---
163
190
 
164
- ### Interactive Execution Inspection (`syrin dev`)
191
+ ### `syrin dev` — See What Your LLM Actually Does
165
192
 
166
- `syrin dev` provides a governed chat interface for MCP servers.
193
+ **The Problem:** Your LLM calls tools, but you can't see *why* it chose that tool, what parameters it's sending, or what happens between steps. You're debugging blind.
167
194
 
168
- - Preview tool calls before execution
169
- - Execute tools only when explicitly enabled
170
- - Switch between LLM providers
171
- - Inspect large tool outputs safely
195
+ **The Solution:** An interactive environment where you see every tool proposal before it executes.
172
196
 
173
197
  ```bash
174
- syrin dev
198
+ syrin dev # Preview mode (no execution)
199
+ syrin dev --exec # Enable execution when ready
175
200
  ```
176
201
 
177
- Enable execution only when ready:
178
-
179
- ```bash
180
- syrin dev --exec
181
- ```
202
+ **What you get:**
203
+ - See exactly which tool the LLM wants to call and why
204
+ - Inspect parameters before they're sent
205
+ - Step through tool chains one call at a time
206
+ - Full event trace of every decision
182
207
 
183
208
  ---
184
209
 
185
- ### Tool-Level Structural Safety Validation (`syrin test`)
210
+ ### `syrin test` Validate Tools in Isolation
186
211
 
187
- **v1.3.0 Feature**: `syrin test` now validates tool contracts through sandboxed execution.
212
+ **The Problem:** A tool works fine in manual testing, but in production it has side effects you didn't expect, returns massive outputs that blow your context window, or behaves differently on repeated calls.
188
213
 
189
- This acts as a "hard design gate" to ensure each tool is individually safe for agent-driven systems:
190
-
191
- - **Tool Unit Contracts**: Define behavioral guarantees in `tools/<tool-name>.yaml` files
192
- - **Sandboxed Execution**: Tools tested in isolated environments with resource limits
193
- - **Behavioral Observation**: Detects side effects, non-determinism, output explosions, hidden dependencies
194
- - **Process Reuse**: Optimized for performance (100+ tools in 1-3 minutes)
214
+ **The Solution:** Sandboxed execution that validates each tool against its behavioral contract.
195
215
 
196
216
  ```bash
197
- # Validate all tools
198
- syrin test
199
-
200
- # Test specific tool
201
- syrin test --tool fetch_user
202
-
203
- # Strict mode (warnings become errors)
204
- syrin test --strict
205
-
206
- # JSON output for CI
207
- syrin test --json
217
+ syrin test # Test all tools
218
+ syrin test --tool fetch_user # Test specific tool
219
+ syrin test --strict # Warnings become errors
220
+ syrin test --json # JSON output for CI
208
221
  ```
209
222
 
210
- **Connection Testing** (legacy behavior):
211
-
212
- ```bash
213
- syrin test --connection
214
- ```
215
-
216
- ### Protocol and Configuration Validation
217
-
218
- Before running anything, Syrin validates assumptions.
223
+ **What it catches:**
224
+ - Unexpected side effects (file writes, network calls)
225
+ - Non-deterministic outputs
226
+ - Output size explosions
227
+ - Hidden dependencies on external state
228
+ - Contract violations
219
229
 
220
- ```bash
221
- syrin doctor
222
- syrin test --connection # Test MCP connection only
223
- ```
230
+ ---
224
231
 
225
- These commands ensure:
232
+ ### `syrin doctor` — Validate Your Setup
226
233
 
227
- - Configuration is valid
228
- - Environment variables are set
229
- - MCP protocol is followed correctly
234
+ **The Problem:** Something's misconfigured, but you're not sure what. API keys? Transport settings? MCP connection?
230
235
 
231
- ---
232
-
233
- ## Typical Workflow
236
+ **The Solution:** A single command that checks everything.
234
237
 
235
238
  ```bash
236
- syrin init # Initialise configuration
237
- syrin doctor # Validate setup
238
- syrin analyse # Static analysis of tool contracts
239
- syrin test # Validate tool contracts (sandboxed execution)
240
- syrin test --connection # Test MCP protocol connection
241
- syrin dev # Inspect behaviour interactively
239
+ syrin doctor # Check config, env, connections
240
+ syrin test --connection # Test MCP connection only
242
241
  ```
243
242
 
244
- This workflow is designed to catch issues **before production**.
245
-
246
243
  ---
247
244
 
248
- ## Commands Overview
249
-
250
- | Command | Purpose |
251
- | ------------------------- | --------------------------------------------- |
252
- | `syrin init` | Initialise a Syrin project |
253
- | `syrin doctor` | Validate configuration and environment |
254
- | `syrin analyse` | Static analysis of MCP tool contracts |
255
- | `syrin test` | Validate tool contracts (sandboxed execution) |
256
- | `syrin test --connection` | Test MCP protocol connection (legacy) |
257
- | `syrin list` | Inspect tools, resources, and prompts |
258
- | `syrin dev` | Interactive execution inspection |
259
-
260
- Full documentation: [https://docs.syrin.dev/commands](https://docs.syrin.dev/commands)
261
-
262
- ---
263
-
264
- ## Tool Contracts (v1.3.0)
245
+ ## Tool Contracts
265
246
 
266
247
  Define behavioral guarantees for your tools in `tools/<tool-name>.yaml` files:
267
248
 
@@ -282,17 +263,12 @@ See [Tool Contracts Documentation](./docs/tool-contracts.md) for details.
282
263
 
283
264
  ## Configuration
284
265
 
285
- Syrin uses a single configuration file:
266
+ Syrin supports **two configuration layers**:
286
267
 
287
- ```bash
288
- syrin.yaml
289
- ```
268
+ - **Local** (`syrin.yaml` in project root) — transport, MCP connection, LLM providers
269
+ - **Global** (`~/.syrin/syrin.yaml`) — shared LLM API keys and defaults across projects
290
270
 
291
- This file defines:
292
-
293
- - Transport type (`stdio` or `http`)
294
- - MCP server connection
295
- - Allowed LLM providers
271
+ Local config overrides global config. CLI flags override both.
296
272
 
297
273
  Configuration reference: [https://docs.syrin.dev/configuration](https://docs.syrin.dev/configuration)
298
274
 
@@ -322,17 +298,37 @@ Provider configuration: [https://docs.syrin.dev/configuration/llm](https://docs.
322
298
 
323
299
  ---
324
300
 
301
+ ## Community
302
+
303
+ - [Discord](https://discord.gg/j8GUvHybSa) — Ask questions, share feedback
304
+ - [GitHub Discussions](https://github.com/Syrin-Labs/cli/discussions) — Feature ideas, show & tell
305
+ - [Documentation](https://docs.syrin.dev) — Full guides and API reference
306
+
307
+ Found a bug or have a feature request? [Open an issue](https://github.com/Syrin-Labs/cli/issues) — we read every one.
308
+
309
+ If Syrin helped you catch something your logs missed, a [star on GitHub](https://github.com/Syrin-Labs/cli) helps others find it too.
310
+
311
+ ---
312
+
325
313
  ## Links
326
314
 
327
315
  - Documentation: [https://docs.syrin.dev](https://docs.syrin.dev)
328
- - GitHub: [https://github.com/syrin-labs/cli](https://github.com/syrin-labs/cli)
329
- - Issues: [https://github.com/syrin-labs/cli/issues](https://github.com/syrin-labs/cli/issues)
316
+ - GitHub: [https://github.com/Syrin-Labs/cli](https://github.com/Syrin-Labs/cli)
317
+ - Issues: [https://github.com/Syrin-Labs/cli/issues](https://github.com/Syrin-Labs/cli/issues)
330
318
  - npm: [https://www.npmjs.com/package/@syrin/cli](https://www.npmjs.com/package/@syrin/cli)
331
319
 
332
320
  ---
333
321
 
322
+ ## Contributing
323
+
324
+ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) before submitting PRs.
325
+
326
+ For security issues, please see our [Security Policy](SECURITY.md).
327
+
328
+ ---
329
+
334
330
  ## License
335
331
 
336
- ISC License. See LICENSE for details.
332
+ ISC License. See [LICENSE](LICENSE) for details.
337
333
 
338
- Made with ❤️ by **Syrin Labs**.
334
+ Made with care by **Syrin Labs**.
@@ -17,8 +17,8 @@ export interface DevCommandOptions {
17
17
  runScript?: boolean;
18
18
  /** Transport type override */
19
19
  transport?: 'stdio' | 'http';
20
- /** MCP URL override (for http transport) */
21
- mcpUrl?: string;
20
+ /** MCP server URL override (for http transport) */
21
+ url?: string;
22
22
  /** Script command override (for stdio transport) */
23
23
  script?: string;
24
24
  }
@@ -60,7 +60,7 @@ export async function executeDev(options = {}) {
60
60
  try {
61
61
  const configResult = loadConfigWithGlobal(projectRoot, {
62
62
  transport: options.transport,
63
- mcp_url: options.mcpUrl,
63
+ mcp_url: options.url,
64
64
  script: options.script,
65
65
  });
66
66
  config = configResult.config;
@@ -82,14 +82,14 @@ export async function executeDev(options = {}) {
82
82
  log.info('💡 Using global config requires CLI flags:');
83
83
  log.info(' --transport <stdio|http>');
84
84
  if (options.transport === 'http') {
85
- log.info(' --mcp-url <url>');
85
+ log.info(' --url <url>');
86
86
  }
87
87
  else if (options.transport === 'stdio') {
88
88
  log.info(' --script <command>');
89
89
  }
90
90
  else {
91
91
  // Show both options when transport is not specified
92
- log.info(' --mcp-url <url> (for http transport)');
92
+ log.info(' --url <url> (for http transport)');
93
93
  log.info(' --script <command> (for stdio transport)');
94
94
  }
95
95
  log.blank();
package/dist/cli/index.js CHANGED
@@ -297,7 +297,7 @@ export function setupCLI() {
297
297
  .option('--event-file <path>', 'Directory path for event files (default: .syrin/events). Events are saved as {sessionId}.jsonl')
298
298
  .option('--run-script', 'Run script to spawn server internally. If not provided, stdio uses script automatically, http connects to existing server')
299
299
  .option('--transport <type>', 'Transport type (stdio or http). Required when using global config.')
300
- .option('--mcp-url <url>', 'MCP server URL (required for http transport when using global config)')
300
+ .option('--url <url>', 'MCP server URL (required for http transport when using global config)')
301
301
  .option('--script <command>', 'Script command to run MCP server (required for stdio transport when using global config)')
302
302
  .action(async (options) => {
303
303
  try {
@@ -309,7 +309,7 @@ export function setupCLI() {
309
309
  eventFile: options.eventFile,
310
310
  runScript: options.runScript || false,
311
311
  transport: options.transport,
312
- mcpUrl: options.mcpUrl,
312
+ url: options.url,
313
313
  script: options.script,
314
314
  });
315
315
  }
@@ -50,7 +50,7 @@ export function createConfigFromGlobal(global, flags = {}) {
50
50
  }
51
51
  // Validate transport-specific requirements
52
52
  if (flags.transport === 'http' && !flags.mcp_url) {
53
- throw new Error('MCP URL is required for HTTP transport. Use --mcp-url <url> flag.');
53
+ throw new Error('MCP URL is required for HTTP transport. Use --url <url> flag.');
54
54
  }
55
55
  if (flags.transport === 'stdio' && !flags.script) {
56
56
  throw new Error('Script command is required for stdio transport. Use --script <command> flag.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syrin/cli",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "LICENSE"
24
24
  ],
25
25
  "engines": {
26
- "node": ">=18.0.0"
26
+ "node": ">=20.12.0"
27
27
  },
28
28
  "keywords": [
29
29
  "mcp",
@@ -55,52 +55,52 @@
55
55
  },
56
56
  "repository": {
57
57
  "type": "git",
58
- "url": "git+https://github.com/syrin-labs/cli.git"
58
+ "url": "git+https://github.com/Syrin-Labs/cli.git"
59
59
  },
60
60
  "author": "Syrin Labs Team",
61
61
  "license": "ISC",
62
62
  "bugs": {
63
- "url": "https://github.com/syrin-labs/cli/issues"
63
+ "url": "https://github.com/Syrin-Labs/cli/issues"
64
64
  },
65
- "homepage": "https://github.com/syrin-labs/cli#readme",
65
+ "homepage": "https://github.com/Syrin-Labs/cli#readme",
66
66
  "publishConfig": {
67
67
  "access": "public"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@types/inquirer": "^9.0.9",
71
71
  "@types/js-yaml": "^4.0.9",
72
- "@types/node": "^25.0.3",
73
- "@types/react": "^19.2.7",
72
+ "@types/node": "^25.2.0",
73
+ "@types/react": "^19.2.10",
74
74
  "@types/uuid": "^10.0.0",
75
- "@typescript-eslint/eslint-plugin": "^8.52.0",
76
- "@typescript-eslint/parser": "^8.52.0",
77
- "@vitest/coverage-v8": "^3.2.4",
78
- "@vitest/ui": "^3.2.4",
75
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
76
+ "@typescript-eslint/parser": "^8.54.0",
77
+ "@vitest/coverage-v8": "^4.0.18",
78
+ "@vitest/ui": "^4.0.18",
79
79
  "eslint": "^9.39.2",
80
80
  "eslint-config-prettier": "^10.1.8",
81
81
  "eslint-import-resolver-typescript": "^4.4.4",
82
82
  "eslint-plugin-import": "^2.32.0",
83
- "eslint-plugin-prettier": "^5.5.4",
84
- "globals": "^17.0.0",
85
- "prettier": "^3.7.4",
83
+ "eslint-plugin-prettier": "^5.5.5",
84
+ "globals": "^17.3.0",
85
+ "prettier": "^3.8.1",
86
86
  "tsc-alias": "^1.8.16",
87
87
  "tsconfig-paths": "^4.2.0",
88
88
  "typescript": "^5.9.3",
89
- "vitest": "^3.2.4"
89
+ "vitest": "^4.0.18"
90
90
  },
91
91
  "dependencies": {
92
- "@anthropic-ai/sdk": "^0.71.2",
93
- "@apidevtools/json-schema-ref-parser": "^15.1.3",
94
- "@modelcontextprotocol/sdk": "^1.25.1",
95
- "commander": "^14.0.2",
92
+ "@anthropic-ai/sdk": "^0.72.1",
93
+ "@apidevtools/json-schema-ref-parser": "^15.2.2",
94
+ "@modelcontextprotocol/sdk": "^1.25.3",
95
+ "commander": "^14.0.3",
96
96
  "ink": "^6.6.0",
97
97
  "ink-text-input": "^6.0.0",
98
- "inquirer": "^13.1.0",
98
+ "inquirer": "^13.2.2",
99
99
  "js-yaml": "^4.1.1",
100
100
  "ollama": "^0.6.3",
101
- "openai": "^6.15.0",
102
- "react": "^19.2.3",
101
+ "openai": "^6.17.0",
102
+ "react": "^19.2.4",
103
103
  "uuid": "^13.0.0",
104
- "zod": "^4.3.5"
104
+ "zod": "^4.3.6"
105
105
  }
106
106
  }