opalserve 3.0.0 → 3.1.0
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/LICENSE +21 -21
- package/README.md +576 -124
- package/assets/logo.svg +51 -51
- package/dist/cli/commands/admin.js +6 -6
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +54 -75
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui/banner.d.ts.map +1 -1
- package/dist/cli/ui/banner.js +15 -14
- package/dist/cli/ui/banner.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/core/server-manager.d.ts.map +1 -1
- package/dist/core/server-manager.js +2 -1
- package/dist/core/server-manager.js.map +1 -1
- package/dist/dashboard/assets/charts-CKTlvUso.js +68 -0
- package/dist/dashboard/assets/icons-DciuKSzL.js +131 -0
- package/dist/dashboard/assets/index-BrOv-3xx.css +1 -0
- package/dist/dashboard/assets/index-DnqqzxX6.js +33 -0
- package/dist/dashboard/assets/react-BJczIp53.js +28 -0
- package/dist/dashboard/index.html +17 -14
- package/dist/integrations/github.js +3 -3
- package/dist/integrations/slack.js +1 -1
- package/dist/monitoring/tracker.js +13 -13
- package/dist/server/mcp-gateway.d.ts.map +1 -1
- package/dist/server/mcp-gateway.js +2 -1
- package/dist/server/mcp-gateway.js.map +1 -1
- package/dist/server/routes/context.js +1 -1
- package/dist/server/routes/health.d.ts.map +1 -1
- package/dist/server/routes/health.js +2 -1
- package/dist/server/routes/health.js.map +1 -1
- package/dist/server/routes/stats.js +6 -6
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/storage/database.js +146 -130
- package/dist/storage/database.js.map +1 -1
- package/package.json +91 -91
- package/dist/dashboard/assets/index-BNOtcUPs.js +0 -257
- package/dist/dashboard/assets/index-Duwp34GW.css +0 -1
package/dist/storage/database.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import initSqlJs from 'sql.js';
|
|
2
2
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
3
|
+
import { dirname, join, normalize } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
import { getDefaultDbPath } from '../config/defaults.js';
|
|
6
6
|
let SQL = null;
|
|
@@ -22,128 +22,128 @@ async function getSqlJs() {
|
|
|
22
22
|
}
|
|
23
23
|
return SQL;
|
|
24
24
|
}
|
|
25
|
-
const SCHEMA = `
|
|
26
|
-
CREATE TABLE IF NOT EXISTS servers (
|
|
27
|
-
name TEXT PRIMARY KEY,
|
|
28
|
-
config_json TEXT NOT NULL,
|
|
29
|
-
status TEXT NOT NULL DEFAULT 'disconnected',
|
|
30
|
-
server_info TEXT,
|
|
31
|
-
tool_count INTEGER DEFAULT 0,
|
|
32
|
-
last_seen TEXT,
|
|
33
|
-
error TEXT,
|
|
34
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
35
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
CREATE TABLE IF NOT EXISTS tools (
|
|
39
|
-
id TEXT PRIMARY KEY,
|
|
40
|
-
server_name TEXT NOT NULL,
|
|
41
|
-
name TEXT NOT NULL,
|
|
42
|
-
description TEXT DEFAULT '',
|
|
43
|
-
input_schema TEXT,
|
|
44
|
-
annotations TEXT,
|
|
45
|
-
discovered_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
46
|
-
last_verified TEXT NOT NULL DEFAULT (datetime('now'))
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
CREATE INDEX IF NOT EXISTS idx_tools_server ON tools(server_name);
|
|
50
|
-
CREATE INDEX IF NOT EXISTS idx_tools_name ON tools(name);
|
|
51
|
-
|
|
52
|
-
CREATE TABLE IF NOT EXISTS users (
|
|
53
|
-
id TEXT PRIMARY KEY,
|
|
54
|
-
email TEXT UNIQUE NOT NULL,
|
|
55
|
-
password_hash TEXT NOT NULL,
|
|
56
|
-
display_name TEXT,
|
|
57
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
58
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
CREATE TABLE IF NOT EXISTS teams (
|
|
62
|
-
id TEXT PRIMARY KEY,
|
|
63
|
-
name TEXT NOT NULL,
|
|
64
|
-
slug TEXT UNIQUE NOT NULL,
|
|
65
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
CREATE TABLE IF NOT EXISTS team_members (
|
|
69
|
-
team_id TEXT NOT NULL,
|
|
70
|
-
user_id TEXT NOT NULL,
|
|
71
|
-
role TEXT NOT NULL DEFAULT 'member',
|
|
72
|
-
joined_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
73
|
-
PRIMARY KEY (team_id, user_id)
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
CREATE TABLE IF NOT EXISTS api_keys (
|
|
77
|
-
id TEXT PRIMARY KEY,
|
|
78
|
-
user_id TEXT NOT NULL,
|
|
79
|
-
key_hash TEXT NOT NULL,
|
|
80
|
-
key_prefix TEXT NOT NULL,
|
|
81
|
-
name TEXT NOT NULL,
|
|
82
|
-
last_used_at TEXT,
|
|
83
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
84
|
-
expires_at TEXT
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
CREATE TABLE IF NOT EXISTS team_servers (
|
|
88
|
-
id TEXT PRIMARY KEY,
|
|
89
|
-
team_id TEXT NOT NULL,
|
|
90
|
-
name TEXT NOT NULL,
|
|
91
|
-
config_json TEXT NOT NULL,
|
|
92
|
-
credentials_encrypted TEXT,
|
|
93
|
-
enabled INTEGER DEFAULT 1,
|
|
94
|
-
created_by TEXT,
|
|
95
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
96
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
97
|
-
UNIQUE(team_id, name)
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
CREATE TABLE IF NOT EXISTS context_documents (
|
|
101
|
-
id TEXT PRIMARY KEY,
|
|
102
|
-
team_id TEXT,
|
|
103
|
-
title TEXT NOT NULL,
|
|
104
|
-
content TEXT NOT NULL,
|
|
105
|
-
content_type TEXT DEFAULT 'text/markdown',
|
|
106
|
-
source TEXT,
|
|
107
|
-
tags TEXT DEFAULT '[]',
|
|
108
|
-
uploaded_by TEXT,
|
|
109
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
110
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
CREATE TABLE IF NOT EXISTS usage_events (
|
|
114
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
115
|
-
team_id TEXT,
|
|
116
|
-
user_id TEXT,
|
|
117
|
-
event_type TEXT NOT NULL,
|
|
118
|
-
server_name TEXT,
|
|
119
|
-
tool_name TEXT,
|
|
120
|
-
latency_ms INTEGER,
|
|
121
|
-
success INTEGER,
|
|
122
|
-
error TEXT,
|
|
123
|
-
metadata TEXT,
|
|
124
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
CREATE INDEX IF NOT EXISTS idx_usage_user ON usage_events(user_id, created_at);
|
|
128
|
-
CREATE INDEX IF NOT EXISTS idx_usage_team ON usage_events(team_id, created_at);
|
|
129
|
-
|
|
130
|
-
CREATE TABLE IF NOT EXISTS rate_limits (
|
|
131
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
132
|
-
team_id TEXT NOT NULL,
|
|
133
|
-
user_id TEXT,
|
|
134
|
-
role TEXT,
|
|
135
|
-
limit_type TEXT NOT NULL,
|
|
136
|
-
max_value INTEGER NOT NULL
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
CREATE TABLE IF NOT EXISTS tool_permissions (
|
|
140
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
141
|
-
team_id TEXT NOT NULL,
|
|
142
|
-
role TEXT NOT NULL,
|
|
143
|
-
server_name TEXT NOT NULL,
|
|
144
|
-
tool_name TEXT,
|
|
145
|
-
permission TEXT NOT NULL DEFAULT 'allow'
|
|
146
|
-
);
|
|
25
|
+
const SCHEMA = `
|
|
26
|
+
CREATE TABLE IF NOT EXISTS servers (
|
|
27
|
+
name TEXT PRIMARY KEY,
|
|
28
|
+
config_json TEXT NOT NULL,
|
|
29
|
+
status TEXT NOT NULL DEFAULT 'disconnected',
|
|
30
|
+
server_info TEXT,
|
|
31
|
+
tool_count INTEGER DEFAULT 0,
|
|
32
|
+
last_seen TEXT,
|
|
33
|
+
error TEXT,
|
|
34
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
35
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
CREATE TABLE IF NOT EXISTS tools (
|
|
39
|
+
id TEXT PRIMARY KEY,
|
|
40
|
+
server_name TEXT NOT NULL,
|
|
41
|
+
name TEXT NOT NULL,
|
|
42
|
+
description TEXT DEFAULT '',
|
|
43
|
+
input_schema TEXT,
|
|
44
|
+
annotations TEXT,
|
|
45
|
+
discovered_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
46
|
+
last_verified TEXT NOT NULL DEFAULT (datetime('now'))
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
CREATE INDEX IF NOT EXISTS idx_tools_server ON tools(server_name);
|
|
50
|
+
CREATE INDEX IF NOT EXISTS idx_tools_name ON tools(name);
|
|
51
|
+
|
|
52
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
53
|
+
id TEXT PRIMARY KEY,
|
|
54
|
+
email TEXT UNIQUE NOT NULL,
|
|
55
|
+
password_hash TEXT NOT NULL,
|
|
56
|
+
display_name TEXT,
|
|
57
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
58
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
CREATE TABLE IF NOT EXISTS teams (
|
|
62
|
+
id TEXT PRIMARY KEY,
|
|
63
|
+
name TEXT NOT NULL,
|
|
64
|
+
slug TEXT UNIQUE NOT NULL,
|
|
65
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
CREATE TABLE IF NOT EXISTS team_members (
|
|
69
|
+
team_id TEXT NOT NULL,
|
|
70
|
+
user_id TEXT NOT NULL,
|
|
71
|
+
role TEXT NOT NULL DEFAULT 'member',
|
|
72
|
+
joined_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
73
|
+
PRIMARY KEY (team_id, user_id)
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
CREATE TABLE IF NOT EXISTS api_keys (
|
|
77
|
+
id TEXT PRIMARY KEY,
|
|
78
|
+
user_id TEXT NOT NULL,
|
|
79
|
+
key_hash TEXT NOT NULL,
|
|
80
|
+
key_prefix TEXT NOT NULL,
|
|
81
|
+
name TEXT NOT NULL,
|
|
82
|
+
last_used_at TEXT,
|
|
83
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
84
|
+
expires_at TEXT
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
CREATE TABLE IF NOT EXISTS team_servers (
|
|
88
|
+
id TEXT PRIMARY KEY,
|
|
89
|
+
team_id TEXT NOT NULL,
|
|
90
|
+
name TEXT NOT NULL,
|
|
91
|
+
config_json TEXT NOT NULL,
|
|
92
|
+
credentials_encrypted TEXT,
|
|
93
|
+
enabled INTEGER DEFAULT 1,
|
|
94
|
+
created_by TEXT,
|
|
95
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
96
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
97
|
+
UNIQUE(team_id, name)
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
CREATE TABLE IF NOT EXISTS context_documents (
|
|
101
|
+
id TEXT PRIMARY KEY,
|
|
102
|
+
team_id TEXT,
|
|
103
|
+
title TEXT NOT NULL,
|
|
104
|
+
content TEXT NOT NULL,
|
|
105
|
+
content_type TEXT DEFAULT 'text/markdown',
|
|
106
|
+
source TEXT,
|
|
107
|
+
tags TEXT DEFAULT '[]',
|
|
108
|
+
uploaded_by TEXT,
|
|
109
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
110
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
CREATE TABLE IF NOT EXISTS usage_events (
|
|
114
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
115
|
+
team_id TEXT,
|
|
116
|
+
user_id TEXT,
|
|
117
|
+
event_type TEXT NOT NULL,
|
|
118
|
+
server_name TEXT,
|
|
119
|
+
tool_name TEXT,
|
|
120
|
+
latency_ms INTEGER,
|
|
121
|
+
success INTEGER,
|
|
122
|
+
error TEXT,
|
|
123
|
+
metadata TEXT,
|
|
124
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
CREATE INDEX IF NOT EXISTS idx_usage_user ON usage_events(user_id, created_at);
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_usage_team ON usage_events(team_id, created_at);
|
|
129
|
+
|
|
130
|
+
CREATE TABLE IF NOT EXISTS rate_limits (
|
|
131
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
132
|
+
team_id TEXT NOT NULL,
|
|
133
|
+
user_id TEXT,
|
|
134
|
+
role TEXT,
|
|
135
|
+
limit_type TEXT NOT NULL,
|
|
136
|
+
max_value INTEGER NOT NULL
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
CREATE TABLE IF NOT EXISTS tool_permissions (
|
|
140
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
141
|
+
team_id TEXT NOT NULL,
|
|
142
|
+
role TEXT NOT NULL,
|
|
143
|
+
server_name TEXT NOT NULL,
|
|
144
|
+
tool_name TEXT,
|
|
145
|
+
permission TEXT NOT NULL DEFAULT 'allow'
|
|
146
|
+
);
|
|
147
147
|
`;
|
|
148
148
|
export class Database {
|
|
149
149
|
db;
|
|
@@ -153,13 +153,29 @@ export class Database {
|
|
|
153
153
|
this.filePath = filePath;
|
|
154
154
|
}
|
|
155
155
|
static async open(filePath) {
|
|
156
|
-
const
|
|
156
|
+
const raw = filePath || getDefaultDbPath();
|
|
157
|
+
if (raw.includes('\0'))
|
|
158
|
+
throw new Error('Invalid database path');
|
|
159
|
+
const resolved = normalize(raw);
|
|
157
160
|
mkdirSync(dirname(resolved), { recursive: true });
|
|
158
161
|
const SqlJs = await getSqlJs();
|
|
159
162
|
let db;
|
|
160
163
|
if (existsSync(resolved)) {
|
|
161
164
|
const buffer = readFileSync(resolved);
|
|
162
|
-
|
|
165
|
+
// Check if it's a valid SQLite file (starts with "SQLite format 3")
|
|
166
|
+
const header = buffer.slice(0, 16).toString('utf-8');
|
|
167
|
+
if (header.startsWith('SQLite format 3')) {
|
|
168
|
+
db = new SqlJs.Database(buffer);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
// Old JSON format or corrupted file — start fresh
|
|
172
|
+
const backupPath = resolved + '.v2.bak';
|
|
173
|
+
try {
|
|
174
|
+
writeFileSync(backupPath, buffer);
|
|
175
|
+
}
|
|
176
|
+
catch { /* ignore */ }
|
|
177
|
+
db = new SqlJs.Database();
|
|
178
|
+
}
|
|
163
179
|
}
|
|
164
180
|
else {
|
|
165
181
|
db = new SqlJs.Database();
|
|
@@ -217,10 +233,10 @@ export class Database {
|
|
|
217
233
|
// --- Server Operations ---
|
|
218
234
|
upsertServer(config) {
|
|
219
235
|
const now = new Date().toISOString();
|
|
220
|
-
this.run(`
|
|
221
|
-
INSERT INTO servers (name, config_json, status, created_at, updated_at)
|
|
222
|
-
VALUES (?, ?, 'disconnected', ?, ?)
|
|
223
|
-
ON CONFLICT(name) DO UPDATE SET config_json = excluded.config_json, updated_at = ?
|
|
236
|
+
this.run(`
|
|
237
|
+
INSERT INTO servers (name, config_json, status, created_at, updated_at)
|
|
238
|
+
VALUES (?, ?, 'disconnected', ?, ?)
|
|
239
|
+
ON CONFLICT(name) DO UPDATE SET config_json = excluded.config_json, updated_at = ?
|
|
224
240
|
`, [config.name, JSON.stringify(config), now, now, now]);
|
|
225
241
|
}
|
|
226
242
|
getServer(name) {
|
|
@@ -250,7 +266,7 @@ export class Database {
|
|
|
250
266
|
const now = new Date().toISOString();
|
|
251
267
|
for (const tool of tools) {
|
|
252
268
|
const id = `${serverName}:${tool.name}`;
|
|
253
|
-
this.run(`INSERT INTO tools (id, server_name, name, description, input_schema, annotations, discovered_at, last_verified)
|
|
269
|
+
this.run(`INSERT INTO tools (id, server_name, name, description, input_schema, annotations, discovered_at, last_verified)
|
|
254
270
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [id, serverName, tool.name, tool.description || '', tool.inputSchema ? JSON.stringify(tool.inputSchema) : null,
|
|
255
271
|
tool.annotations ? JSON.stringify(tool.annotations) : null, now, now]);
|
|
256
272
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "opalserve",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "The control plane for your team's AI tools — share MCP servers, knowledge bases, and usage analytics across your engineering team",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"import": "./dist/index.js",
|
|
11
|
-
"types": "./dist/index.d.ts"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"bin": {
|
|
15
|
-
"opalserve": "
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"dist",
|
|
19
|
-
"assets/logo.svg",
|
|
20
|
-
"LICENSE",
|
|
21
|
-
"README.md"
|
|
22
|
-
],
|
|
23
|
-
"scripts": {
|
|
24
|
-
"build": "tsc",
|
|
25
|
-
"start": "node dist/cli/index.js",
|
|
26
|
-
"dev": "tsx watch src/cli/index.ts",
|
|
27
|
-
"typecheck": "tsc --noEmit",
|
|
28
|
-
"lint": "eslint src/",
|
|
29
|
-
"test": "vitest run",
|
|
30
|
-
"test:watch": "vitest",
|
|
31
|
-
"prepublishOnly": "pnpm build",
|
|
32
|
-
"docs:dev": "vitepress dev docs",
|
|
33
|
-
"docs:build": "vitepress build docs",
|
|
34
|
-
"docs:preview": "vitepress preview docs"
|
|
35
|
-
},
|
|
36
|
-
"keywords": [
|
|
37
|
-
"mcp",
|
|
38
|
-
"model-context-protocol",
|
|
39
|
-
"tool-registry",
|
|
40
|
-
"ai-tools",
|
|
41
|
-
"cli",
|
|
42
|
-
"discovery",
|
|
43
|
-
"aggregator",
|
|
44
|
-
"llm",
|
|
45
|
-
"claude",
|
|
46
|
-
"cursor"
|
|
47
|
-
],
|
|
48
|
-
"author": "AdityaIdev <aiexpert@adityaai.dev>",
|
|
49
|
-
"license": "MIT",
|
|
50
|
-
"homepage": "https://opalserve.
|
|
51
|
-
"repository": {
|
|
52
|
-
"type": "git",
|
|
53
|
-
"url": "https://github.com/adityaidev/opalserve.git"
|
|
54
|
-
},
|
|
55
|
-
"bugs": {
|
|
56
|
-
"url": "https://github.com/adityaidev/opalserve/issues"
|
|
57
|
-
},
|
|
58
|
-
"engines": {
|
|
59
|
-
"node": ">=20.0.0"
|
|
60
|
-
},
|
|
61
|
-
"dependencies": {
|
|
62
|
-
"@fastify/cors": "^11.0.0",
|
|
63
|
-
"@fastify/static": "^9.1.
|
|
64
|
-
"@inquirer/prompts": "^8.4.1",
|
|
65
|
-
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
66
|
-
"boxen": "^8.0.1",
|
|
67
|
-
"chalk": "^5.4.1",
|
|
68
|
-
"cli-table3": "^0.6.5",
|
|
69
|
-
"commander": "^13.1.0",
|
|
70
|
-
"cosmiconfig": "^9.0.0",
|
|
71
|
-
"fastify": "^5.
|
|
72
|
-
"gradient-string": "^3.0.0",
|
|
73
|
-
"inquirer": "^12.6.0",
|
|
74
|
-
"ora": "^8.2.0",
|
|
75
|
-
"pino": "^9.
|
|
76
|
-
"pino-pretty": "^13.0.0",
|
|
77
|
-
"sql.js": "^1.14.1",
|
|
78
|
-
"zod": "^3.24.4"
|
|
79
|
-
},
|
|
80
|
-
"devDependencies": {
|
|
81
|
-
"@eslint/js": "^9.25.1",
|
|
82
|
-
"@types/gradient-string": "^1.1.6",
|
|
83
|
-
"@types/node": "^22.15.3",
|
|
84
|
-
"eslint": "^9.25.1",
|
|
85
|
-
"tsx": "^4.19.4",
|
|
86
|
-
"typescript": "^5.8.3",
|
|
87
|
-
"typescript-eslint": "^8.31.0",
|
|
88
|
-
"vitepress": "^1.6.3",
|
|
89
|
-
"vitest": "^3.1.2"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "opalserve",
|
|
3
|
+
"version": "3.1.0",
|
|
4
|
+
"description": "The control plane for your team's AI tools — share MCP servers, knowledge bases, and usage analytics across your engineering team",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"opalserve": "dist/cli/index.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"assets/logo.svg",
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"README.md"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc && pnpm --filter opalserve-dashboard build",
|
|
25
|
+
"start": "node dist/cli/index.js",
|
|
26
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"lint": "eslint src/",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:watch": "vitest",
|
|
31
|
+
"prepublishOnly": "pnpm build",
|
|
32
|
+
"docs:dev": "vitepress dev docs",
|
|
33
|
+
"docs:build": "vitepress build docs",
|
|
34
|
+
"docs:preview": "vitepress preview docs"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"mcp",
|
|
38
|
+
"model-context-protocol",
|
|
39
|
+
"tool-registry",
|
|
40
|
+
"ai-tools",
|
|
41
|
+
"cli",
|
|
42
|
+
"discovery",
|
|
43
|
+
"aggregator",
|
|
44
|
+
"llm",
|
|
45
|
+
"claude",
|
|
46
|
+
"cursor"
|
|
47
|
+
],
|
|
48
|
+
"author": "AdityaIdev <aiexpert@adityaai.dev>",
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"homepage": "https://opalserve.adityaai.dev",
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/adityaidev/opalserve.git"
|
|
54
|
+
},
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/adityaidev/opalserve/issues"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=20.0.0"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@fastify/cors": "^11.0.0",
|
|
63
|
+
"@fastify/static": "^9.1.3",
|
|
64
|
+
"@inquirer/prompts": "^8.4.1",
|
|
65
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
66
|
+
"boxen": "^8.0.1",
|
|
67
|
+
"chalk": "^5.4.1",
|
|
68
|
+
"cli-table3": "^0.6.5",
|
|
69
|
+
"commander": "^13.1.0",
|
|
70
|
+
"cosmiconfig": "^9.0.0",
|
|
71
|
+
"fastify": "^5.8.5",
|
|
72
|
+
"gradient-string": "^3.0.0",
|
|
73
|
+
"inquirer": "^12.6.0",
|
|
74
|
+
"ora": "^8.2.0",
|
|
75
|
+
"pino": "^9.14.0",
|
|
76
|
+
"pino-pretty": "^13.0.0",
|
|
77
|
+
"sql.js": "^1.14.1",
|
|
78
|
+
"zod": "^3.24.4"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@eslint/js": "^9.25.1",
|
|
82
|
+
"@types/gradient-string": "^1.1.6",
|
|
83
|
+
"@types/node": "^22.15.3",
|
|
84
|
+
"eslint": "^9.25.1",
|
|
85
|
+
"tsx": "^4.19.4",
|
|
86
|
+
"typescript": "^5.8.3",
|
|
87
|
+
"typescript-eslint": "^8.31.0",
|
|
88
|
+
"vitepress": "^1.6.3",
|
|
89
|
+
"vitest": "^3.1.2"
|
|
90
|
+
}
|
|
91
|
+
}
|