@iris-eval/mcp-server 0.2.0 → 0.2.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.
@@ -1 +1 @@
1
- :root{--bg-primary:#0a0a0b;--bg-secondary:#141416;--bg-tertiary:#1c1c1f;--bg-hover:#252528;--text-primary:#fafafa;--text-secondary:#a1a1aa;--text-muted:#71717a;--accent-primary:#0d9488;--accent-primary-hover:#14b8a6;--accent-success:#22c55e;--accent-error:#ef4444;--accent-warning:#f59e0b;--accent-tool:#3b82f6;--accent-llm:#a855f7;--border-color:#27272a;--border-radius:8px;--border-radius-sm:4px;--border-radius-lg:12px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px #0006;--shadow-lg:0 10px 15px #00000080;--transition-fast:.15s ease;--transition-base:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--font-size-base);color:var(--text-primary);background-color:var(--bg-primary);-webkit-font-smoothing:antialiased;line-height:1.5}a{color:var(--accent-primary);text-decoration:none}a:hover{color:var(--accent-primary-hover)}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit;font-size:inherit}code,pre{font-family:var(--font-mono)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
1
+ :root{--bg-primary:#0a0a0b;--bg-secondary:#141416;--bg-tertiary:#1c1c1f;--bg-hover:#252528;--text-primary:#fafafa;--text-secondary:#a1a1aa;--text-muted:#71717a;--accent-primary:#0d9488;--accent-primary-hover:#14b8a6;--accent-success:#22c55e;--accent-error:#ef4444;--accent-warning:#f59e0b;--accent-tool:#3b82f6;--accent-llm:#a855f7;--border-color:#27272a;--border-radius:8px;--border-radius-sm:4px;--border-radius-lg:12px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 6px #0006;--shadow-lg:0 10px 15px #00000080;--transition-fast:.15s ease;--transition-base:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--font-size-base);color:var(--text-primary);background-color:var(--bg-primary);-webkit-font-smoothing:antialiased;line-height:1.5}a{color:var(--accent-primary);text-decoration:none}a:hover{color:var(--accent-primary-hover)}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit;font-size:inherit}code,pre{font-family:var(--font-mono)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>Iris — Agent Eval & Observability</title>
8
- <script type="module" crossorigin src="/assets/index-Biw11Phy.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-C9BwWthL.css">
8
+ <script type="module" crossorigin src="/assets/index-BNDB0-BX.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-CAwaZNw5.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ const { values } = parseArgs({
22
22
  });
23
23
  if (values.help) {
24
24
  process.stderr.write(`
25
- Iris — MCP-Native Agent Eval & Observability Server
25
+ Iris — MCP-Native Agent Eval Server
26
26
 
27
27
  Usage: iris-mcp [options]
28
28
 
@@ -55,6 +55,13 @@ async function main() {
55
55
  logger.info(`Storage initialized (${config.storage.type}: ${config.storage.path})`);
56
56
  const { mcpServer } = createIrisServer(config, storage);
57
57
  const httpServers = [];
58
+ // Run data retention cleanup on startup
59
+ if (config.retention.days > 0) {
60
+ const deleted = await storage.deleteTracesOlderThan(config.retention.days);
61
+ if (deleted > 0) {
62
+ logger.info(`Retention cleanup: deleted ${deleted} trace(s) older than ${config.retention.days} days`);
63
+ }
64
+ }
58
65
  if (config.transport.type === 'http') {
59
66
  const { transport, httpServer } = await createHttpTransport(mcpServer, config, logger);
60
67
  httpServers.push(httpServer);
@@ -0,0 +1,3 @@
1
+ import type Database from 'better-sqlite3';
2
+ export declare const id = "003-eval-passed-index";
3
+ export declare function up(db: Database.Database): void;
@@ -0,0 +1,6 @@
1
+ export const id = '003-eval-passed-index';
2
+ export function up(db) {
3
+ db.exec(`
4
+ CREATE INDEX IF NOT EXISTS idx_eval_results_passed ON eval_results(passed);
5
+ `);
6
+ }
@@ -1,6 +1,7 @@
1
1
  import * as migration001 from './001-initial-schema.js';
2
2
  import * as migration002 from './002-eval-skip-fields.js';
3
- const migrations = [migration001, migration002];
3
+ import * as migration003 from './003-eval-passed-index.js';
4
+ const migrations = [migration001, migration002, migration003];
4
5
  export function runMigrations(db) {
5
6
  db.exec(`
6
7
  CREATE TABLE IF NOT EXISTS _iris_migrations (
@@ -61,6 +61,14 @@ export class SqliteAdapter {
61
61
  conditions.push('timestamp <= ?');
62
62
  params.push(filter.until);
63
63
  }
64
+ if (filter?.min_score !== undefined) {
65
+ conditions.push('EXISTS (SELECT 1 FROM eval_results e WHERE e.trace_id = traces.trace_id AND e.score >= ?)');
66
+ params.push(filter.min_score);
67
+ }
68
+ if (filter?.max_score !== undefined) {
69
+ conditions.push('EXISTS (SELECT 1 FROM eval_results e WHERE e.trace_id = traces.trace_id AND e.score <= ?)');
70
+ params.push(filter.max_score);
71
+ }
64
72
  const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
65
73
  const sortBy = options.sort_by ?? 'timestamp';
66
74
  const sortOrder = options.sort_order ?? 'desc';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iris-eval/mcp-server",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "The agent eval standard for MCP. Score every agent output for quality, safety, and cost.",
5
5
  "mcpName": "io.github.iris-eval/mcp-server",
6
6
  "type": "module",
@@ -47,7 +47,11 @@
47
47
  "output-quality",
48
48
  "quality-gate"
49
49
  ],
50
- "author": "Ian Parent",
50
+ "author": {
51
+ "name": "Iris",
52
+ "email": "hello@iris-eval.com",
53
+ "url": "https://github.com/iris-eval"
54
+ },
51
55
  "license": "MIT",
52
56
  "repository": {
53
57
  "type": "git",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/iris-eval/mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.2.0",
9
+ "version": "0.2.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@iris-eval/mcp-server",
14
- "version": "0.2.0",
14
+ "version": "0.2.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },