opalserve 3.0.0 → 3.0.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
@@ -11,130 +11,559 @@
11
11
  <a href="https://www.npmjs.com/package/opalserve"><img src="https://img.shields.io/npm/dm/opalserve?style=flat-square" alt="downloads" /></a>
12
12
  <a href="https://github.com/adityaidev/opalserve/blob/master/LICENSE"><img src="https://img.shields.io/github/license/adityaidev/opalserve?style=flat-square" alt="license" /></a>
13
13
  <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen?style=flat-square" alt="node version" /></a>
14
+ <a href="https://github.com/adityaidev/opalserve"><img src="https://img.shields.io/github/stars/adityaidev/opalserve?style=flat-square" alt="GitHub stars" /></a>
14
15
  </p>
15
16
 
16
17
  ---
17
18
 
18
- **OpalServe** is a team platform for managing AI coding tools. Share MCP servers, knowledge bases, and usage analytics across your engineering team whether they use Claude Code, Cursor, Codex, or any MCP-compatible tool.
19
+ **OpalServe** is an open-source platform that gives engineering teams a single place to register, discover, and govern the MCP (Model Context Protocol) servers their AI coding tools depend on. Instead of every developer manually configuring Claude Desktop, Cursor, Codex, or Windsurf with scattered server definitions, OpalServe provides a centralized registry with shared knowledge bases, usage analytics, role-based access control, and a built-in MCP gateway -- so your team's AI tools stay consistent, observable, and secure.
19
20
 
20
- ## Features
21
+ ---
22
+
23
+ ## Feature Highlights
24
+
25
+ | | Feature | Description |
26
+ |---|---|---|
27
+ | :books: | **Team MCP Registry** | Admin registers servers once; every developer pulls them with `opalserve sync` |
28
+ | :brain: | **Shared Knowledge Base** | Upload architecture docs, coding standards, and API specs -- AI tools query them automatically via MCP |
29
+ | :bar_chart: | **Usage Analytics Dashboard** | React SPA showing tool calls, token usage, active users, and error rates in real time |
30
+ | :lock: | **Auth & Access Control** | User accounts, JWT tokens, API keys, rate limits, and per-role tool permissions |
31
+ | :electric_plug: | **GitHub + Slack Integrations** | Webhooks auto-update context; Slack slash commands for search and notifications |
32
+ | :globe_with_meridians: | **MCP Gateway** | OpalServe itself is an MCP server -- connect any AI client to access every tool from one endpoint |
33
+ | :art: | **Beautiful CLI** | Interactive setup wizard, gradient banners, color-coded tables, 20+ commands |
34
+ | :seedling: | **100% Open Source** | MIT licensed, self-host for free, no vendor lock-in |
21
35
 
22
- - **Team MCP Server Registry** — Admin registers servers once, every developer gets them via `opalserve sync`
23
- - **Shared Knowledge Base** — Upload architecture docs, coding standards, API specs — your team's AI tools query it automatically via MCP
24
- - **Usage Analytics Dashboard** — React SPA showing tool calls, token usage, active users, error rates per developer
25
- - **Auth & Access Control** — User accounts, API keys, rate limits, tool permissions per role
26
- - **GitHub + Slack Integration** — Webhooks auto-update context, slash commands for search
27
- - **MCP Gateway** — OpalServe itself is an MCP server — connect any AI client to access all tools from one endpoint
28
- - **Beautiful CLI** — Interactive setup, gradient banners, color-coded tables, 15+ commands
29
- - **100% Open Source** — MIT licensed, self-host for free
36
+ ---
30
37
 
31
38
  ## Architecture
32
39
 
33
40
  ```
34
- ┌──────────────────────────┐
35
- OpalServe Team Server
36
-
37
- │ Team MCP Server Registry
38
- Shared Knowledge Base
39
- │ Usage Analytics │
40
- React Admin Dashboard │
41
- Auth / API Keys │
42
- └────────────┬──────────────┘
43
- HTTPS API
44
- ┌────────────────┼────────────────┐
45
-
46
- Dev A (Claude) Dev B (Cursor) Dev C (Codex)
41
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
42
+ GitHub │ Slack │ Filesystem │ │ PostgreSQL │
43
+ MCP Server │ MCP Server │ │ MCP Server │ │ MCP Server │
44
+ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
45
+ │ │
46
+ └────────────────┼────────────────┼────────────────┘
47
+ MCP Protocol (stdio / SSE)
48
+
49
+ ┌──────────┴──────────────────────────────┐
50
+ OpalServe Team Server │
51
+ │ │
52
+ ┌─────────────┐ ┌──────────────────┐
53
+ │ │ MCP Server │ │ Shared Knowledge │ │
54
+ │ │ Registry │ │ Base (FTS) │ │
55
+ │ └─────────────┘ └──────────────────┘ │
56
+ │ ┌─────────────┐ ┌──────────────────┐ │
57
+ │ │ Usage │ │ Auth / API Keys │ │
58
+ │ │ Analytics │ │ Rate Limiting │ │
59
+ │ └─────────────┘ └──────────────────┘ │
60
+ │ ┌─────────────┐ ┌──────────────────┐ │
61
+ │ │ MCP Gateway │ │ React Dashboard │ │
62
+ │ │ (stdio/SSE) │ │ (/dashboard) │ │
63
+ │ └─────────────┘ └──────────────────┘ │
64
+ │ │
65
+ │ SQLite DB ── Fastify HTTP API (:3456) │
66
+ └──────────────────┬──────────────────────┘
67
+
68
+ HTTPS API + MCP Protocol (stdio / SSE)
69
+
70
+ ┌──────────────────────┼──────────────────────┐
71
+ │ │ │
72
+ ┌────────┴─────────┐ ┌────────┴─────────┐ ┌────────┴─────────┐
73
+ │ Dev A │ │ Dev B │ │ Dev C │
74
+ │ Claude Code │ │ Cursor │ │ Codex / Windsurf │
75
+ │ opalserve sync │ │ opalserve sync │ │ opalserve sync │
76
+ └──────────────────┘ └──────────────────┘ └──────────────────┘
47
77
  ```
48
78
 
79
+ ---
80
+
49
81
  ## Quick Start
50
82
 
51
83
  ```bash
52
- # Install
84
+ # 1. Install globally
53
85
  npm install -g opalserve
54
86
 
55
- # Interactive setup
87
+ # 2. Run the interactive setup wizard
56
88
  opalserve init
57
89
 
58
- # Start the registry
90
+ # 3. Start the server
59
91
  opalserve start
60
92
 
61
- # Add an MCP server
93
+ # 4. Register your first MCP server
62
94
  opalserve server add --name files --stdio "npx -y @modelcontextprotocol/server-filesystem ."
63
95
 
64
- # Search tools
96
+ # 5. Discover available tools
65
97
  opalserve tools search "read file"
66
98
  ```
67
99
 
68
- ## Team Mode
100
+ > **Tip:** OpalServe runs on port **3456** by default. Visit `http://localhost:3456/dashboard` after starting.
101
+
102
+ ---
103
+
104
+ ## Team Mode Setup
105
+
106
+ Team mode turns OpalServe into a shared server that your entire engineering org connects to.
107
+
108
+ ### 1. Initialize the team server
69
109
 
70
110
  ```bash
71
- # Initialize team server
72
111
  opalserve admin init
112
+ ```
113
+
114
+ This creates an admin account, generates encryption keys, and prepares the SQLite database.
115
+
116
+ ### 2. Configure team mode
117
+
118
+ Edit `opalserve.config.json` and set the mode:
73
119
 
74
- # Start in team mode
75
- # (set mode: "team-server" in opalserve.config.json)
120
+ ```json
121
+ {
122
+ "mode": "team-server",
123
+ "port": 3456,
124
+ "host": "0.0.0.0"
125
+ }
126
+ ```
127
+
128
+ ### 3. Start the server
129
+
130
+ ```bash
76
131
  opalserve start
132
+ ```
77
133
 
78
- # On each developer's machine:
134
+ ### 4. Invite team members
135
+
136
+ ```bash
137
+ opalserve admin invite alice@company.com
138
+ opalserve admin invite bob@company.com
139
+ ```
140
+
141
+ ### 5. Developers connect
142
+
143
+ On each developer's machine:
144
+
145
+ ```bash
146
+ npm install -g opalserve
147
+
148
+ # Login to the team server
79
149
  opalserve login
150
+
151
+ # Pull all registered servers to local config
80
152
  opalserve sync
153
+ ```
154
+
155
+ ### 6. Manage access
156
+
157
+ ```bash
158
+ # Set rate limits by role
159
+ opalserve admin limits --set developer:calls_per_hour:500
160
+
161
+ # Set tool permissions
162
+ opalserve admin permissions --set developer:filesystem:*:allow
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Knowledge Base
168
+
169
+ The knowledge base lets you upload documents that become searchable context for every AI tool connected through OpalServe.
81
170
 
82
- # Upload shared docs
171
+ ### Adding documents
172
+
173
+ ```bash
174
+ # Upload architecture docs
83
175
  opalserve context add ./docs/architecture.md
176
+
177
+ # Upload API specifications
84
178
  opalserve context add ./docs/api-spec.md
85
179
 
86
- # Search team knowledge
180
+ # Upload coding standards
181
+ opalserve context add ./docs/coding-standards.md
182
+ ```
183
+
184
+ ### Searching context
185
+
186
+ ```bash
187
+ # Search by natural language query
87
188
  opalserve context search "authentication flow"
189
+
190
+ # List all uploaded documents
191
+ opalserve context list
192
+
193
+ # Remove a document
194
+ opalserve context remove <document-id>
88
195
  ```
89
196
 
197
+ When connected via the MCP gateway, AI tools like Claude Desktop can automatically search the knowledge base to ground their responses in your team's actual documentation.
198
+
199
+ ---
200
+
90
201
  ## Admin Dashboard
91
202
 
92
- Start the server and visit `http://localhost:3456/dashboard` for:
93
- - Usage overview with charts
94
- - Server status monitoring
95
- - User management
96
- - Tool browser with search
97
- - Knowledge base management
98
- - API key + integration settings
203
+ OpalServe ships with a built-in React SPA accessible at `/dashboard` when the server is running.
204
+
205
+ The dashboard provides:
206
+
207
+ - **Usage overview** -- charts for tool calls, token consumption, and active users over time
208
+ - **Server monitoring** -- live status of every registered MCP server with health indicators
209
+ - **User management** -- view team members, roles, and activity
210
+ - **Tool browser** -- searchable catalog of all discovered tools across servers
211
+ - **Knowledge base manager** -- upload, browse, and remove context documents
212
+ - **Settings** -- API key management, integration configuration, rate limits
213
+
214
+ ```
215
+ http://localhost:3456/dashboard
216
+ ```
217
+
218
+ > The dashboard is available in team-server mode. Authentication is required for all management operations.
219
+
220
+ ---
99
221
 
100
222
  ## CLI Commands
101
223
 
224
+ | Command | Description |
225
+ |---|---|
226
+ | `opalserve init` | Interactive setup wizard -- configures mode, port, and first server |
227
+ | `opalserve start` | Start the registry server (HTTP API + MCP gateway) |
228
+ | `opalserve status` | Show server status, connected servers, and tool counts |
229
+ | `opalserve health` | Health check all registered servers |
230
+ | `opalserve health --server <name>` | Health check a specific server |
231
+ | `opalserve login` | Authenticate with a team server |
232
+ | `opalserve logout` | Clear stored credentials |
233
+ | `opalserve whoami` | Show current authenticated user info |
234
+ | `opalserve sync` | Pull team server configurations to local machine |
235
+ | `opalserve server list` | List all registered MCP servers |
236
+ | `opalserve server add` | Register a new MCP server (stdio, SSE, or streamable-http) |
237
+ | `opalserve server remove <name>` | Remove a registered server |
238
+ | `opalserve tools list` | List all discovered tools across servers |
239
+ | `opalserve tools search <query>` | Search for tools by natural language query |
240
+ | `opalserve context add <file>` | Upload a file to the shared knowledge base |
241
+ | `opalserve context list` | List all context documents |
242
+ | `opalserve context search <query>` | Search the knowledge base |
243
+ | `opalserve context remove <id>` | Remove a context document |
244
+ | `opalserve admin init` | Initialize team mode with an admin user |
245
+ | `opalserve admin stats` | Show usage statistics for the team |
246
+ | `opalserve admin users` | List all team members |
247
+ | `opalserve admin invite <email>` | Invite a user to the team |
248
+ | `opalserve admin limits` | View and manage rate limits |
249
+ | `opalserve admin permissions` | View and manage tool permissions |
250
+
251
+ ---
252
+
253
+ ## HTTP API
254
+
255
+ OpalServe exposes a RESTful API under `/api/v1`. All endpoints return JSON.
256
+
257
+ ### Health
258
+
259
+ ```bash
260
+ curl http://localhost:3456/api/v1/health
261
+ ```
262
+
263
+ ### Servers
264
+
265
+ ```bash
266
+ # List all servers
267
+ curl http://localhost:3456/api/v1/servers
268
+
269
+ # Register a new server
270
+ curl -X POST http://localhost:3456/api/v1/servers \
271
+ -H "Content-Type: application/json" \
272
+ -d '{
273
+ "name": "filesystem",
274
+ "transport": {
275
+ "type": "stdio",
276
+ "command": "npx",
277
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
278
+ }
279
+ }'
280
+
281
+ # Remove a server
282
+ curl -X DELETE http://localhost:3456/api/v1/servers/filesystem
283
+
284
+ # Health check a specific server
285
+ curl http://localhost:3456/api/v1/servers/filesystem/health
286
+ ```
287
+
288
+ ### Tools
289
+
290
+ ```bash
291
+ # List all tools
292
+ curl http://localhost:3456/api/v1/tools
293
+
294
+ # Search tools
295
+ curl "http://localhost:3456/api/v1/tools/search?q=read+file&limit=5"
296
+
297
+ # Call a tool
298
+ curl -X POST http://localhost:3456/api/v1/tools/filesystem__read_file/call \
299
+ -H "Content-Type: application/json" \
300
+ -d '{"arguments": {"path": "./README.md"}}'
301
+ ```
302
+
303
+ ### Authentication (team mode)
304
+
305
+ ```bash
306
+ # Register
307
+ curl -X POST http://localhost:3456/api/v1/auth/register \
308
+ -H "Content-Type: application/json" \
309
+ -d '{"email": "dev@company.com", "password": "...", "name": "Alice"}'
310
+
311
+ # Login
312
+ curl -X POST http://localhost:3456/api/v1/auth/login \
313
+ -H "Content-Type: application/json" \
314
+ -d '{"email": "dev@company.com", "password": "..."}'
315
+
316
+ # Get current user
317
+ curl http://localhost:3456/api/v1/auth/me \
318
+ -H "Authorization: Bearer <token>"
319
+
320
+ # Create API key
321
+ curl -X POST http://localhost:3456/api/v1/auth/keys \
322
+ -H "Authorization: Bearer <token>" \
323
+ -H "Content-Type: application/json" \
324
+ -d '{"name": "ci-pipeline"}'
102
325
  ```
103
- opalserve init Setup wizard
104
- opalserve start Start server
105
- opalserve status Show status
106
- opalserve login / logout / whoami Auth commands
107
- opalserve sync Pull team configs
108
- opalserve server list|add|remove Server management
109
- opalserve tools list|search Tool discovery
110
- opalserve context add|list|search Knowledge base
111
- opalserve health Health checks
112
- opalserve admin init|stats|users Team admin
113
- opalserve admin limits|permissions Access control
326
+
327
+ ### Knowledge Base (team mode)
328
+
329
+ ```bash
330
+ # Upload a document
331
+ curl -X POST http://localhost:3456/api/v1/context/documents \
332
+ -H "Authorization: Bearer <token>" \
333
+ -H "Content-Type: application/json" \
334
+ -d '{"title": "Architecture", "content": "...", "type": "markdown"}'
335
+
336
+ # Search documents
337
+ curl "http://localhost:3456/api/v1/context/search?q=authentication+flow" \
338
+ -H "Authorization: Bearer <token>"
114
339
  ```
115
340
 
341
+ ### Usage Stats (team mode)
342
+
343
+ ```bash
344
+ # Overview
345
+ curl http://localhost:3456/api/v1/stats/overview \
346
+ -H "Authorization: Bearer <token>"
347
+ ```
348
+
349
+ ---
350
+
116
351
  ## Library Usage
117
352
 
118
- ```typescript
119
- import { OpalServeRegistry } from 'opalserve';
353
+ Use OpalServe programmatically in your Node.js applications:
120
354
 
355
+ ```typescript
356
+ import {
357
+ OpalServeRegistry,
358
+ McpGateway,
359
+ KnowledgeBase,
360
+ UsageTracker,
361
+ } from 'opalserve';
362
+
363
+ // Create the registry with server definitions
121
364
  const registry = await OpalServeRegistry.create({
122
- servers: [{
123
- name: 'my-files',
124
- transport: { type: 'stdio', command: 'npx', args: ['-y', '@modelcontextprotocol/server-filesystem', '.'] },
125
- }],
365
+ servers: [
366
+ {
367
+ name: 'filesystem',
368
+ transport: {
369
+ type: 'stdio',
370
+ command: 'npx',
371
+ args: ['-y', '@modelcontextprotocol/server-filesystem', '.'],
372
+ },
373
+ },
374
+ {
375
+ name: 'github',
376
+ transport: {
377
+ type: 'sse',
378
+ url: 'https://mcp-github.example.com/sse',
379
+ },
380
+ },
381
+ ],
126
382
  });
127
383
 
384
+ // Start the registry -- connects to all servers and indexes tools
128
385
  await registry.start();
386
+
387
+ // List all discovered tools
129
388
  const tools = registry.listTools();
130
- const results = registry.searchTools('read file');
389
+ console.log(`Discovered ${tools.length} tools`);
390
+
391
+ // Search with natural language
392
+ const results = registry.searchTools('read file contents');
393
+ for (const result of results) {
394
+ console.log(`${result.tool.name} (score: ${result.score})`);
395
+ }
396
+
397
+ // Graceful shutdown
131
398
  await registry.stop();
132
399
  ```
133
400
 
134
- ## Documentation
401
+ ---
402
+
403
+ ## MCP Gateway
404
+
405
+ OpalServe can act as an MCP server itself, exposing every registered tool through a single endpoint. This lets you point Claude Desktop, Cursor, or any MCP-compatible client at OpalServe instead of configuring each server individually.
406
+
407
+ ### Claude Desktop
408
+
409
+ Add to your `claude_desktop_config.json`:
135
410
 
136
- Full docs at [opalserve.vercel.app](https://opalserve.vercel.app)
411
+ ```json
412
+ {
413
+ "mcpServers": {
414
+ "opalserve": {
415
+ "command": "opalserve",
416
+ "args": ["start", "--mcp"]
417
+ }
418
+ }
419
+ }
420
+ ```
421
+
422
+ ### Cursor
423
+
424
+ Add to your Cursor MCP settings:
425
+
426
+ ```json
427
+ {
428
+ "mcpServers": {
429
+ "opalserve": {
430
+ "command": "opalserve",
431
+ "args": ["start", "--mcp"]
432
+ }
433
+ }
434
+ }
435
+ ```
436
+
437
+ Once connected, your AI client gains access to:
438
+
439
+ - **`opalserve_search`** -- search across all registered tools by natural language query
440
+ - **`opalserve_context_search`** -- search the shared knowledge base
441
+ - **All proxied tools** -- every tool from every registered server, available through the single gateway
442
+
443
+ ---
444
+
445
+ ## Integrations
446
+
447
+ ### GitHub
448
+
449
+ Set up GitHub webhooks to automatically update context when code changes:
450
+
451
+ ```bash
452
+ # Add GitHub MCP server
453
+ opalserve server add --name github --stdio "npx -y @modelcontextprotocol/server-github"
454
+
455
+ # Configure webhook (point your repo's webhook to):
456
+ # POST http://your-server:3456/api/v1/webhooks/github
457
+ ```
458
+
459
+ Environment variables:
460
+
461
+ ```
462
+ GITHUB_TOKEN=ghp_...
463
+ GITHUB_WEBHOOK_SECRET=your-secret
464
+ ```
465
+
466
+ ### Slack
467
+
468
+ Enable Slack integration for search commands and notifications:
469
+
470
+ ```bash
471
+ # Add Slack MCP server
472
+ opalserve server add --name slack --stdio "npx -y @modelcontextprotocol/server-slack"
473
+ ```
474
+
475
+ Configure your Slack app to send events and commands to:
476
+
477
+ ```
478
+ Events: POST http://your-server:3456/api/v1/slack/events
479
+ Commands: POST http://your-server:3456/api/v1/slack/commands
480
+ ```
481
+
482
+ Environment variables:
483
+
484
+ ```
485
+ SLACK_BOT_TOKEN=xoxb-...
486
+ SLACK_SIGNING_SECRET=your-secret
487
+ ```
488
+
489
+ ---
490
+
491
+ ## Configuration
492
+
493
+ OpalServe is configured via `opalserve.config.json` in your project root or home directory.
494
+
495
+ ```json
496
+ {
497
+ "mode": "local",
498
+ "port": 3456,
499
+ "host": "127.0.0.1",
500
+ "servers": [
501
+ {
502
+ "name": "filesystem",
503
+ "transport": {
504
+ "type": "stdio",
505
+ "command": "npx",
506
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
507
+ }
508
+ }
509
+ ]
510
+ }
511
+ ```
512
+
513
+ | Option | Default | Description |
514
+ |---|---|---|
515
+ | `mode` | `"local"` | `"local"` for single-user, `"team-server"` for shared |
516
+ | `port` | `3456` | HTTP API port |
517
+ | `host` | `"127.0.0.1"` | Bind address (`0.0.0.0` for team server) |
518
+ | `servers` | `[]` | Array of MCP server configurations |
519
+
520
+ Modes: **local** (single developer, no auth) and **team-server** (multi-user with auth, analytics, knowledge base).
521
+
522
+ > See the [full configuration reference](https://opalserve.vercel.app/config) for all options.
523
+
524
+ ---
525
+
526
+ ## Contributing
527
+
528
+ Contributions are welcome. To get started:
529
+
530
+ ```bash
531
+ # Clone the repo
532
+ git clone https://github.com/adityaidev/opalserve.git
533
+ cd opalserve
534
+
535
+ # Install dependencies
536
+ pnpm install
537
+
538
+ # Start in dev mode (watch + auto-reload)
539
+ pnpm dev
540
+
541
+ # Type-check
542
+ pnpm typecheck
543
+
544
+ # Lint
545
+ pnpm lint
546
+
547
+ # Run tests
548
+ pnpm test
549
+ ```
550
+
551
+ Please open an issue before submitting large PRs. Follow the existing code style -- strict TypeScript, Zod schemas for validation, and `.js` extensions in imports.
552
+
553
+ ---
554
+
555
+ ## Links
556
+
557
+ - **Documentation:** [opalserve.vercel.app](https://opalserve.vercel.app)
558
+ - **npm:** [npmjs.com/package/opalserve](https://www.npmjs.com/package/opalserve)
559
+ - **GitHub:** [github.com/adityaidev/opalserve](https://github.com/adityaidev/opalserve)
560
+ - **Releases:** [github.com/adityaidev/opalserve/releases](https://github.com/adityaidev/opalserve/releases)
561
+ - **Issues:** [github.com/adityaidev/opalserve/issues](https://github.com/adityaidev/opalserve/issues)
562
+
563
+ ---
137
564
 
138
565
  ## License
139
566
 
140
- MIT 100% open source, free to self-host
567
+ MIT -- 100% open source, free to self-host.
568
+
569
+ See [LICENSE](./LICENSE) for details.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AA2CA,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EpE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BxD;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BvE;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAyBA,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEpE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BxD;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BvE;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE"}
@@ -2,8 +2,9 @@ import chalk from 'chalk';
2
2
  import { readFileSync, readdirSync, statSync } from 'node:fs';
3
3
  import { basename, extname, resolve } from 'node:path';
4
4
  import { confirm } from '@inquirer/prompts';
5
+ import { OpalServeRegistry } from '../../core/registry.js';
6
+ import { KnowledgeBase } from '../../context/index.js';
5
7
  import { showMiniBanner, showSuccess, showError, showInfo } from '../ui/banner.js';
6
- import { loadCredentials } from '../../config/credentials.js';
7
8
  function getContentType(filePath) {
8
9
  const ext = extname(filePath).toLowerCase();
9
10
  const types = {
@@ -20,45 +21,27 @@ function getContentType(filePath) {
20
21
  };
21
22
  return types[ext] ?? 'text/plain';
22
23
  }
23
- async function apiRequest(path, options) {
24
- const creds = loadCredentials();
25
- if (!creds) {
26
- throw new Error('Not logged in. Run `opalserve login` first.');
27
- }
28
- const response = await fetch(`${creds.serverUrl}${path}`, {
29
- ...options,
30
- headers: {
31
- 'Content-Type': 'application/json',
32
- Authorization: `Bearer ${creds.apiKey}`,
33
- ...options?.headers,
34
- },
35
- });
36
- return response.json();
37
- }
38
24
  export async function contextAddCommand(files) {
39
25
  showMiniBanner();
40
26
  try {
41
- // Resolve file paths - support comma-separated or single paths
42
- let filePaths;
27
+ const registry = await OpalServeRegistry.create();
28
+ const kb = new KnowledgeBase(registry.getDatabase());
29
+ // Resolve file paths
43
30
  const candidates = files.split(',').map(f => f.trim()).filter(Boolean);
44
- filePaths = [];
31
+ const filePaths = [];
45
32
  for (const candidate of candidates) {
46
33
  const resolved = resolve(candidate);
47
34
  try {
48
35
  const stat = statSync(resolved);
49
36
  if (stat.isDirectory()) {
50
- // If directory, read all files in it
51
37
  const entries = readdirSync(resolved);
52
38
  for (const entry of entries) {
53
39
  const entryPath = resolve(resolved, entry);
54
40
  try {
55
- if (statSync(entryPath).isFile()) {
41
+ if (statSync(entryPath).isFile())
56
42
  filePaths.push(entryPath);
57
- }
58
- }
59
- catch {
60
- // Skip unreadable entries
61
43
  }
44
+ catch { /* skip */ }
62
45
  }
63
46
  }
64
47
  else {
@@ -66,13 +49,13 @@ export async function contextAddCommand(files) {
66
49
  }
67
50
  }
68
51
  catch {
69
- // Try as-is in case it's handled elsewhere
70
52
  filePaths.push(resolved);
71
53
  }
72
54
  }
73
55
  if (filePaths.length === 0) {
74
56
  showError(`No files found matching "${files}"`);
75
- process.exit(1);
57
+ registry.getDatabase().close();
58
+ return;
76
59
  }
77
60
  showInfo(`Uploading ${chalk.bold(String(filePaths.length))} file(s)...`);
78
61
  console.log('');
@@ -83,18 +66,9 @@ export async function contextAddCommand(files) {
83
66
  const contentType = getContentType(filePath);
84
67
  try {
85
68
  const content = readFileSync(filePath, 'utf-8');
86
- const result = await apiRequest('/api/v1/context/documents', {
87
- method: 'POST',
88
- body: JSON.stringify({ title, content, contentType, source: filePath }),
89
- });
90
- if (result.ok) {
91
- showSuccess(`${chalk.white(title)} ${chalk.dim(`(${content.length} chars)`)}`);
92
- uploaded++;
93
- }
94
- else {
95
- showError(`${title}: ${result.error}`);
96
- failed++;
97
- }
69
+ kb.addDocument({ title, content, contentType, source: filePath });
70
+ showSuccess(`${chalk.white(title)} ${chalk.dim(`(${content.length} chars)`)}`);
71
+ uploaded++;
98
72
  }
99
73
  catch (error) {
100
74
  const msg = error instanceof Error ? error.message : String(error);
@@ -104,62 +78,59 @@ export async function contextAddCommand(files) {
104
78
  }
105
79
  console.log('');
106
80
  showSuccess(`Uploaded: ${chalk.bold(String(uploaded))}, Failed: ${chalk.bold(String(failed))}`);
81
+ registry.getDatabase().close();
107
82
  }
108
83
  catch (error) {
109
84
  showError(error instanceof Error ? error.message : String(error));
110
- process.exit(1);
111
85
  }
112
86
  }
113
87
  export async function contextListCommand() {
114
88
  showMiniBanner();
115
89
  try {
116
- const result = await apiRequest('/api/v1/context/documents');
117
- if (!result.ok || !result.data) {
118
- showError(result.error ?? 'Failed to list documents');
119
- process.exit(1);
120
- }
121
- if (result.data.length === 0) {
122
- showInfo('No context documents found');
90
+ const registry = await OpalServeRegistry.create();
91
+ const kb = new KnowledgeBase(registry.getDatabase());
92
+ const docs = kb.listDocuments();
93
+ if (docs.length === 0) {
94
+ showInfo('No context documents found. Add some with `opalserve context add <file>`');
95
+ registry.getDatabase().close();
123
96
  return;
124
97
  }
125
- console.log(` ${chalk.bold('Context Documents')} (${result.data.length})\n`);
126
- console.log(` ${chalk.dim('ID'.padEnd(38))} ${chalk.dim('Title'.padEnd(30))} ${chalk.dim('Type'.padEnd(18))} ${chalk.dim('Created')}`);
127
- console.log(` ${chalk.dim('-'.repeat(100))}`);
128
- for (const doc of result.data) {
129
- const id = doc.id.slice(0, 8) + '...';
130
- const title = doc.title.length > 28 ? doc.title.slice(0, 25) + '...' : doc.title;
131
- console.log(` ${chalk.dim(id.padEnd(38))} ${chalk.white(title.padEnd(30))} ${chalk.cyan(doc.contentType.padEnd(18))} ${chalk.dim(doc.createdAt)}`);
98
+ console.log(` ${chalk.bold('Context Documents')} ${chalk.dim(`(${docs.length})`)}\n`);
99
+ for (const doc of docs) {
100
+ const id = doc.id.length > 12 ? doc.id.slice(0, 12) + '...' : doc.id;
101
+ const title = doc.title.length > 35 ? doc.title.slice(0, 32) + '...' : doc.title;
102
+ const size = doc.content.length;
103
+ console.log(` ${chalk.dim(id.padEnd(16))} ${chalk.white(title.padEnd(36))} ${chalk.cyan(doc.contentType.padEnd(18))} ${chalk.dim(`${size} chars`)}`);
132
104
  }
133
105
  console.log('');
106
+ registry.getDatabase().close();
134
107
  }
135
108
  catch (error) {
136
109
  showError(error instanceof Error ? error.message : String(error));
137
- process.exit(1);
138
110
  }
139
111
  }
140
112
  export async function contextSearchCommand(query) {
141
113
  showMiniBanner();
142
114
  try {
143
- const result = await apiRequest(`/api/v1/context/search?q=${encodeURIComponent(query)}`);
144
- if (!result.ok || !result.data) {
145
- showError(result.error ?? 'Search failed');
146
- process.exit(1);
147
- }
148
- if (result.data.length === 0) {
115
+ const registry = await OpalServeRegistry.create();
116
+ const kb = new KnowledgeBase(registry.getDatabase());
117
+ const results = kb.searchDocuments(query);
118
+ if (results.length === 0) {
149
119
  showInfo(`No documents matching "${query}"`);
120
+ registry.getDatabase().close();
150
121
  return;
151
122
  }
152
- console.log(` ${chalk.bold('Search Results')} for "${query}" (${result.data.length})\n`);
153
- for (const { doc, score } of result.data) {
154
- console.log(` ${chalk.yellow(`[${score}]`)} ${chalk.bold(doc.title)} ${chalk.dim(`(${doc.id.slice(0, 8)}...)`)}`);
123
+ console.log(` ${chalk.bold('Search Results')} for "${chalk.cyan(query)}" ${chalk.dim(`(${results.length})`)}\n`);
124
+ for (const { doc, score } of results) {
125
+ console.log(` ${chalk.yellow(`[${score.toFixed(1)}]`)} ${chalk.bold(doc.title)} ${chalk.dim(`(${doc.id.slice(0, 12)}...)`)}`);
155
126
  const preview = doc.content.slice(0, 120).replace(/\n/g, ' ');
156
127
  console.log(` ${chalk.dim(preview)}${doc.content.length > 120 ? '...' : ''}`);
157
128
  console.log('');
158
129
  }
130
+ registry.getDatabase().close();
159
131
  }
160
132
  catch (error) {
161
133
  showError(error instanceof Error ? error.message : String(error));
162
- process.exit(1);
163
134
  }
164
135
  }
165
136
  export async function contextRemoveCommand(id) {
@@ -173,18 +144,19 @@ export async function contextRemoveCommand(id) {
173
144
  showInfo('Cancelled');
174
145
  return;
175
146
  }
176
- const result = await apiRequest(`/api/v1/context/documents/${id}`, {
177
- method: 'DELETE',
178
- });
179
- if (!result.ok) {
180
- showError(result.error ?? 'Failed to delete document');
181
- process.exit(1);
147
+ const registry = await OpalServeRegistry.create();
148
+ const kb = new KnowledgeBase(registry.getDatabase());
149
+ const removed = kb.removeDocument(id);
150
+ if (removed) {
151
+ showSuccess('Document deleted');
152
+ }
153
+ else {
154
+ showError(`Document "${id}" not found`);
182
155
  }
183
- showSuccess('Document deleted');
156
+ registry.getDatabase().close();
184
157
  }
185
158
  catch (error) {
186
159
  showError(error instanceof Error ? error.message : String(error));
187
- process.exit(1);
188
160
  }
189
161
  }
190
162
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AAKxD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkJtH,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO;WAKM,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;WAsB1C,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQ1C,IAAI,IAAI,IAAI;IAOZ,KAAK,IAAI,IAAI;IAKb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI;IAK1C,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI;IAY3E,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAatE,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAS3C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI;IAMpF,aAAa,IAAI;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,EAAE;IAKvE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMnC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKnF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOhG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,EAAE,GAAG,IAAI;IAY5I,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKvC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE;IAKnD,WAAW,IAAI,WAAW,EAAE;IAK5B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAuB9E,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI7C,SAAS,IAAI,MAAM;IAOnB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,MAAM;IAad,QAAQ,IAAI,aAAa;CAG1B"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AAKxD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkJtH,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO;WAKM,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;WA+B1C,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IAQ1C,IAAI,IAAI,IAAI;IAOZ,KAAK,IAAI,IAAI;IAKb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI;IAK1C,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI;IAY3E,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAatE,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAS3C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI;IAMpF,aAAa,IAAI;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,EAAE;IAKvE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMnC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKnF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAOhG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,EAAE,GAAG,IAAI;IAY5I,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKvC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE;IAKnD,WAAW,IAAI,WAAW,EAAE;IAK5B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAuB9E,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI7C,SAAS,IAAI,MAAM;IAOnB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,MAAM;IAad,QAAQ,IAAI,aAAa;CAG1B"}
@@ -159,7 +159,20 @@ export class Database {
159
159
  let db;
160
160
  if (existsSync(resolved)) {
161
161
  const buffer = readFileSync(resolved);
162
- db = new SqlJs.Database(buffer);
162
+ // Check if it's a valid SQLite file (starts with "SQLite format 3")
163
+ const header = buffer.slice(0, 16).toString('utf-8');
164
+ if (header.startsWith('SQLite format 3')) {
165
+ db = new SqlJs.Database(buffer);
166
+ }
167
+ else {
168
+ // Old JSON format or corrupted file — start fresh
169
+ const backupPath = resolved + '.v2.bak';
170
+ try {
171
+ writeFileSync(backupPath, buffer);
172
+ }
173
+ catch { /* ignore */ }
174
+ db = new SqlJs.Database();
175
+ }
163
176
  }
164
177
  else {
165
178
  db = new SqlJs.Database();
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opalserve",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "The control plane for your team's AI tools — share MCP servers, knowledge bases, and usage analytics across your engineering team",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",