@qwickapps/qwickbrain-proxy 1.0.0 → 1.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/CHANGELOG.md +30 -0
- package/README.md +44 -2
- package/dist/bin/cli.js +1 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +7 -2
- package/dist/db/client.js.map +1 -1
- package/dist/lib/proxy-server.d.ts +1 -0
- package/dist/lib/proxy-server.d.ts.map +1 -1
- package/dist/lib/proxy-server.js +101 -35
- package/dist/lib/proxy-server.js.map +1 -1
- package/dist/lib/qwickbrain-client.d.ts +6 -0
- package/dist/lib/qwickbrain-client.d.ts.map +1 -1
- package/dist/lib/qwickbrain-client.js +56 -0
- package/dist/lib/qwickbrain-client.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/cli.ts +1 -1
- package/src/db/client.ts +7 -2
- package/src/lib/proxy-server.ts +104 -35
- package/src/lib/qwickbrain-client.ts +56 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,36 @@ All notable changes to the QwickBrain MCP Proxy will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.0.1] - 2025-01-08
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Database Migration Path**: Fixed relative path issue in drizzle migrations causing initialization failures when installed globally
|
|
13
|
+
- Updated `runMigrations()` to use absolute path resolution with `fileURLToPath` and `dirname`
|
|
14
|
+
- Migrations now correctly locate `drizzle/` directory relative to package installation
|
|
15
|
+
- **Server Configuration**: Corrected default QwickBrain server URL
|
|
16
|
+
- Changed hostname from `macmini-devserver.local` to `macmini-devserver`
|
|
17
|
+
- Added `/sse` endpoint path for SSE transport mode
|
|
18
|
+
- Updated CLI init command and documentation
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Dynamic Tool Forwarding**: Proxy now transparently forwards ALL tools from upstream QwickBrain server
|
|
23
|
+
- Added `listTools()` method to dynamically fetch available tools from upstream
|
|
24
|
+
- Added `callTool()` method for generic tool forwarding
|
|
25
|
+
- Tools like `analyze_repository`, `search_codebase`, `list_documents`, etc. now available through proxy
|
|
26
|
+
- **Enhanced Tool Support**: Beyond cached document tools, now supports all QwickBrain tools including:
|
|
27
|
+
- Code analysis tools (analyze_repository, analyze_file, find_functions, find_classes, get_imports, explain_function)
|
|
28
|
+
- Semantic search tools (search_codebase, search_documents, search_memories)
|
|
29
|
+
- Document management tools (create_document, update_document, delete_document, list_documents)
|
|
30
|
+
- Repository management tools (add_repository, list_repositories, remove_repository, update_repository)
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Tool listing now dynamically fetched from upstream server instead of hardcoded
|
|
35
|
+
- Fallback to minimal cached tool set when upstream unavailable
|
|
36
|
+
- Non-document tools forwarded directly without caching (real-time results)
|
|
37
|
+
|
|
8
38
|
## [1.0.0] - 2025-01-08
|
|
9
39
|
|
|
10
40
|
### Added
|
package/README.md
CHANGED
|
@@ -9,6 +9,48 @@ Local MCP proxy for QwickBrain with caching and resilience features.
|
|
|
9
9
|
- **Graceful degradation**: Serves stale cached data when QwickBrain is unavailable
|
|
10
10
|
- **Write queue**: Queues write operations when offline, syncs when reconnected
|
|
11
11
|
- **Health monitoring**: Continuous health checks and connection state management
|
|
12
|
+
- **Dynamic tool forwarding**: Transparently forwards all QwickBrain tools to MCP clients
|
|
13
|
+
|
|
14
|
+
## Available Tools
|
|
15
|
+
|
|
16
|
+
The proxy provides access to all QwickBrain tools:
|
|
17
|
+
|
|
18
|
+
**Code Analysis:**
|
|
19
|
+
- `analyze_repository` - Analyze repository structure and dependencies
|
|
20
|
+
- `analyze_file` - Extract functions, classes, and structure from files
|
|
21
|
+
- `find_functions` - Find functions matching a pattern
|
|
22
|
+
- `find_classes` - Find classes matching a pattern
|
|
23
|
+
- `get_imports` - Get imports from files
|
|
24
|
+
- `explain_function` - Get detailed function explanations
|
|
25
|
+
|
|
26
|
+
**Semantic Search:**
|
|
27
|
+
- `search_codebase` - Search code with natural language queries
|
|
28
|
+
- `search_documents` - Search engineering documents
|
|
29
|
+
- `search_memories` - Search project memories
|
|
30
|
+
|
|
31
|
+
**Document Management:**
|
|
32
|
+
- `create_document` - Create ADRs, FRDs, designs, spikes, reviews
|
|
33
|
+
- `get_document` - Retrieve specific documents (cached)
|
|
34
|
+
- `list_documents` - List documents by type/project
|
|
35
|
+
- `update_document` - Update existing documents
|
|
36
|
+
- `delete_document` - Remove documents
|
|
37
|
+
|
|
38
|
+
**Repository Management:**
|
|
39
|
+
- `add_repository` - Index GitHub repositories
|
|
40
|
+
- `list_repositories` - List indexed repositories
|
|
41
|
+
- `remove_repository` - Remove from index
|
|
42
|
+
- `update_repository` - Pull and re-index changes
|
|
43
|
+
|
|
44
|
+
**Workflows & Memories:**
|
|
45
|
+
- `get_workflow` - Get workflow definitions (cached)
|
|
46
|
+
- `list_workflows` - List available workflows
|
|
47
|
+
- `create_workflow` - Define new workflows
|
|
48
|
+
- `update_workflow` - Modify workflows
|
|
49
|
+
- `get_memory` - Retrieve memories (cached)
|
|
50
|
+
- `set_memory` - Store project context
|
|
51
|
+
- `list_memories` - List available memories
|
|
52
|
+
|
|
53
|
+
Document tools (workflows, documents, memories) are cached locally for offline access. Other tools require active connection to QwickBrain server.
|
|
12
54
|
|
|
13
55
|
## Installation
|
|
14
56
|
|
|
@@ -25,7 +67,7 @@ qwickbrain-proxy init
|
|
|
25
67
|
```
|
|
26
68
|
|
|
27
69
|
This creates a default configuration at `~/.qwickbrain/config.json` with:
|
|
28
|
-
- QwickBrain URL: `http://macmini-devserver
|
|
70
|
+
- QwickBrain URL: `http://macmini-devserver:3000/sse`
|
|
29
71
|
- Connection mode: `sse` (Server-Sent Events)
|
|
30
72
|
- Cache directory: `~/.qwickbrain/cache`
|
|
31
73
|
|
|
@@ -41,7 +83,7 @@ Configure mode:
|
|
|
41
83
|
```bash
|
|
42
84
|
# SSE mode (default)
|
|
43
85
|
qwickbrain-proxy config set qwickbrain.mode sse
|
|
44
|
-
qwickbrain-proxy config set qwickbrain.url http://macmini-devserver
|
|
86
|
+
qwickbrain-proxy config set qwickbrain.url http://macmini-devserver:3000/sse
|
|
45
87
|
|
|
46
88
|
# MCP stdio mode
|
|
47
89
|
qwickbrain-proxy config set qwickbrain.mode mcp
|
package/dist/bin/cli.js
CHANGED
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/db/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAQtC,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAA0B,GAAG;IACpE,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;IAC9C,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAA;CAC1B,CAaA;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,QAO3D;AAED,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/db/client.js
CHANGED
|
@@ -2,9 +2,10 @@ import Database from 'better-sqlite3';
|
|
|
2
2
|
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
3
3
|
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
|
4
4
|
import * as schema from './schema.js';
|
|
5
|
-
import { join } from 'path';
|
|
5
|
+
import { join, dirname } from 'path';
|
|
6
6
|
import { homedir } from 'os';
|
|
7
7
|
import { mkdirSync } from 'fs';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
8
9
|
const DEFAULT_CACHE_DIR = join(homedir(), '.qwickbrain', 'cache');
|
|
9
10
|
export function createDatabase(cacheDir = DEFAULT_CACHE_DIR) {
|
|
10
11
|
// Ensure cache directory exists
|
|
@@ -18,6 +19,10 @@ export function createDatabase(cacheDir = DEFAULT_CACHE_DIR) {
|
|
|
18
19
|
}
|
|
19
20
|
export function runMigrations(db) {
|
|
20
21
|
// Drizzle will look for migrations in drizzle/ directory
|
|
21
|
-
|
|
22
|
+
// Use absolute path relative to package installation
|
|
23
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
24
|
+
const __dirname = dirname(__filename);
|
|
25
|
+
const migrationsFolder = join(__dirname, '../../drizzle');
|
|
26
|
+
migrate(db, { migrationsFolder });
|
|
22
27
|
}
|
|
23
28
|
//# sourceMappingURL=client.js.map
|
package/dist/db/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,WAAmB,iBAAiB;IAIjE,gCAAgC;IAChC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpC,yCAAyC;IACzC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEpC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAA8B;IAC1D,yDAAyD;IACzD,qDAAqD;IACrD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAI1C,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM;IA2BlC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAI1C,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM;IA2BlC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,aAAa;IAuHrB,OAAO,CAAC,cAAc;YAQR,iBAAiB;YAIjB,iBAAiB;YAmEjB,eAAe;YAgDf,iBAAiB;IAmDzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
|
package/dist/lib/proxy-server.js
CHANGED
|
@@ -42,50 +42,66 @@ export class ProxyServer {
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
setupHandlers() {
|
|
45
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () =>
|
|
46
|
-
tools
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
46
|
+
// Try to fetch tools from upstream if connected
|
|
47
|
+
if (this.connectionManager.getState() === 'connected') {
|
|
48
|
+
try {
|
|
49
|
+
const tools = await this.connectionManager.execute(async () => {
|
|
50
|
+
return await this.qwickbrainClient.listTools();
|
|
51
|
+
});
|
|
52
|
+
return { tools };
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error('Failed to list tools from upstream:', error);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Fallback to minimal tool set when offline or error
|
|
59
|
+
return {
|
|
60
|
+
tools: [
|
|
61
|
+
{
|
|
62
|
+
name: 'get_workflow',
|
|
63
|
+
description: 'Get a workflow definition by name (cached)',
|
|
64
|
+
inputSchema: {
|
|
65
|
+
type: 'object',
|
|
66
|
+
properties: {
|
|
67
|
+
name: { type: 'string', description: 'Workflow name' },
|
|
68
|
+
},
|
|
69
|
+
required: ['name'],
|
|
54
70
|
},
|
|
55
|
-
required: ['name'],
|
|
56
71
|
},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
72
|
+
{
|
|
73
|
+
name: 'get_document',
|
|
74
|
+
description: 'Get a document by name and type (cached)',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
name: { type: 'string', description: 'Document name' },
|
|
79
|
+
doc_type: { type: 'string', description: 'Document type (rule, frd, design, etc.)' },
|
|
80
|
+
project: { type: 'string', description: 'Project name (optional)' },
|
|
81
|
+
},
|
|
82
|
+
required: ['name', 'doc_type'],
|
|
67
83
|
},
|
|
68
|
-
required: ['name', 'doc_type'],
|
|
69
84
|
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
{
|
|
86
|
+
name: 'get_memory',
|
|
87
|
+
description: 'Get a memory/context document by name (cached)',
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: 'object',
|
|
90
|
+
properties: {
|
|
91
|
+
name: { type: 'string', description: 'Memory name' },
|
|
92
|
+
project: { type: 'string', description: 'Project name (optional)' },
|
|
93
|
+
},
|
|
94
|
+
required: ['name'],
|
|
79
95
|
},
|
|
80
|
-
required: ['name'],
|
|
81
96
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
})
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
});
|
|
85
100
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
86
101
|
const { name, arguments: args } = request.params;
|
|
87
102
|
try {
|
|
88
103
|
let result;
|
|
104
|
+
// Handle cacheable document tools specially
|
|
89
105
|
switch (name) {
|
|
90
106
|
case 'get_workflow':
|
|
91
107
|
result = await this.handleGetWorkflow(args?.name);
|
|
@@ -97,7 +113,9 @@ export class ProxyServer {
|
|
|
97
113
|
result = await this.handleGetMemory(args?.name, args?.project);
|
|
98
114
|
break;
|
|
99
115
|
default:
|
|
100
|
-
|
|
116
|
+
// Generic forwarding for all other tools (analyze_repository, search_codebase, etc.)
|
|
117
|
+
result = await this.handleGenericTool(name, args || {});
|
|
118
|
+
break;
|
|
101
119
|
}
|
|
102
120
|
return {
|
|
103
121
|
content: [
|
|
@@ -234,6 +252,54 @@ export class ProxyServer {
|
|
|
234
252
|
_metadata: this.createMetadata('cache'),
|
|
235
253
|
};
|
|
236
254
|
}
|
|
255
|
+
async handleGenericTool(name, args) {
|
|
256
|
+
// Generic tool forwarding - no caching for non-document tools
|
|
257
|
+
if (this.connectionManager.getState() !== 'connected') {
|
|
258
|
+
return {
|
|
259
|
+
error: {
|
|
260
|
+
code: 'UNAVAILABLE',
|
|
261
|
+
message: `QwickBrain unavailable - cannot call tool: ${name}`,
|
|
262
|
+
suggestions: [
|
|
263
|
+
'Check internet connection',
|
|
264
|
+
'Wait for automatic reconnection',
|
|
265
|
+
],
|
|
266
|
+
},
|
|
267
|
+
_metadata: this.createMetadata('cache'),
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
const result = await this.connectionManager.execute(async () => {
|
|
272
|
+
return await this.qwickbrainClient.callTool(name, args);
|
|
273
|
+
});
|
|
274
|
+
// Parse the MCP response format
|
|
275
|
+
if (result && typeof result === 'object' && 'content' in result) {
|
|
276
|
+
const content = result.content;
|
|
277
|
+
if (Array.isArray(content) && content[0]?.type === 'text') {
|
|
278
|
+
// Parse the text content as JSON
|
|
279
|
+
const data = JSON.parse(content[0].text);
|
|
280
|
+
return {
|
|
281
|
+
data,
|
|
282
|
+
_metadata: this.createMetadata('live'),
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// Fallback: return raw result
|
|
287
|
+
return {
|
|
288
|
+
data: result,
|
|
289
|
+
_metadata: this.createMetadata('live'),
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
294
|
+
return {
|
|
295
|
+
error: {
|
|
296
|
+
code: 'TOOL_ERROR',
|
|
297
|
+
message: `Tool call failed: ${errorMessage}`,
|
|
298
|
+
},
|
|
299
|
+
_metadata: this.createMetadata('cache'),
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
}
|
|
237
303
|
async start() {
|
|
238
304
|
// Clean up expired cache entries on startup
|
|
239
305
|
const { documentsDeleted, memoriesDeleted } = await this.cacheManager.cleanupExpiredEntries();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,OAAO,WAAW;IACd,MAAM,CAAS;IACf,iBAAiB,CAAoB;IACrC,YAAY,CAAe;IAC3B,gBAAgB,CAAmB;IACnC,MAAM,CAAS;IAEvB,YAAY,EAAM,EAAE,MAAc;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEhE,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,gBAAgB,EACrB,MAAM,CAAC,UAAU,CAClB,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAEO,wBAAwB;QAC9B,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;YACxD,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/D,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACvD,OAAO,CAAC,KAAK,CAAC,qCAAqC,SAAS,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACtD,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/lib/proxy-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,12 @@ export declare class QwickBrainClient {
|
|
|
19
19
|
private getMemoryMCP;
|
|
20
20
|
private getMemoryHTTP;
|
|
21
21
|
healthCheck(): Promise<boolean>;
|
|
22
|
+
listTools(): Promise<Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
inputSchema?: unknown;
|
|
26
|
+
}>>;
|
|
27
|
+
callTool(name: string, args?: Record<string, unknown>): Promise<unknown>;
|
|
22
28
|
disconnect(): Promise<void>;
|
|
23
29
|
}
|
|
24
30
|
//# sourceMappingURL=qwickbrain-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwickbrain-client.d.ts","sourceRoot":"","sources":["../../src/lib/qwickbrain-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA8BjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;IAKlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAShB,UAAU;YAuBV,UAAU;IAsBlB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC;YAQhB,cAAc;YA4Bd,eAAe;IA0BvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAQ9D,YAAY;YA0BZ,aAAa;IAyBrB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAuB/B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
|
|
1
|
+
{"version":3,"file":"qwickbrain-client.d.ts","sourceRoot":"","sources":["../../src/lib/qwickbrain-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA8BjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;IAKlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAShB,UAAU;YAuBV,UAAU;IAsBlB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC;YAQhB,cAAc;YA4Bd,eAAe;IA0BvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAQ9D,YAAY;YA0BZ,aAAa;IAyBrB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAuB/B,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAyB1F,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BxE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
|
|
@@ -186,6 +186,62 @@ export class QwickBrainClient {
|
|
|
186
186
|
return false;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
+
async listTools() {
|
|
190
|
+
if (this.mode === 'mcp' || this.mode === 'sse') {
|
|
191
|
+
if (!this.client) {
|
|
192
|
+
throw new Error('MCP client not connected');
|
|
193
|
+
}
|
|
194
|
+
const result = await this.client.listTools();
|
|
195
|
+
return result.tools;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// For HTTP mode, fetch tools from API
|
|
199
|
+
if (!this.config.url) {
|
|
200
|
+
throw new Error('HTTP mode requires url to be configured');
|
|
201
|
+
}
|
|
202
|
+
const response = await fetch(`${this.config.url}/mcp/tools`, {
|
|
203
|
+
headers: {
|
|
204
|
+
...(this.config.apiKey && { 'Authorization': `Bearer ${this.config.apiKey}` }),
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
if (!response.ok) {
|
|
208
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
209
|
+
}
|
|
210
|
+
const json = await response.json();
|
|
211
|
+
return json.tools;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
async callTool(name, args) {
|
|
215
|
+
if (this.mode === 'mcp' || this.mode === 'sse') {
|
|
216
|
+
if (!this.client) {
|
|
217
|
+
throw new Error('MCP client not connected');
|
|
218
|
+
}
|
|
219
|
+
const result = await this.client.callTool({
|
|
220
|
+
name,
|
|
221
|
+
arguments: args || {},
|
|
222
|
+
});
|
|
223
|
+
// Return the raw result - let the caller parse it
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// For HTTP mode, call tool via API
|
|
228
|
+
if (!this.config.url) {
|
|
229
|
+
throw new Error('HTTP mode requires url to be configured');
|
|
230
|
+
}
|
|
231
|
+
const response = await fetch(`${this.config.url}/mcp/tool`, {
|
|
232
|
+
method: 'POST',
|
|
233
|
+
headers: {
|
|
234
|
+
'Content-Type': 'application/json',
|
|
235
|
+
...(this.config.apiKey && { 'Authorization': `Bearer ${this.config.apiKey}` }),
|
|
236
|
+
},
|
|
237
|
+
body: JSON.stringify({ name, arguments: args || {} }),
|
|
238
|
+
});
|
|
239
|
+
if (!response.ok) {
|
|
240
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
241
|
+
}
|
|
242
|
+
return response.json();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
189
245
|
async disconnect() {
|
|
190
246
|
if ((this.mode === 'mcp' || this.mode === 'sse') && this.client && this.transport) {
|
|
191
247
|
await this.client.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwickbrain-client.js","sourceRoot":"","sources":["../../src/lib/qwickbrain-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qwickbrain-client.js","sourceRoot":"","sources":["../../src/lib/qwickbrain-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/bin/cli.ts
CHANGED
package/src/db/client.ts
CHANGED
|
@@ -2,9 +2,10 @@ import Database from 'better-sqlite3';
|
|
|
2
2
|
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
3
3
|
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
|
4
4
|
import * as schema from './schema.js';
|
|
5
|
-
import { join } from 'path';
|
|
5
|
+
import { join, dirname } from 'path';
|
|
6
6
|
import { homedir } from 'os';
|
|
7
7
|
import { mkdirSync } from 'fs';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
8
9
|
|
|
9
10
|
const DEFAULT_CACHE_DIR = join(homedir(), '.qwickbrain', 'cache');
|
|
10
11
|
|
|
@@ -28,7 +29,11 @@ export function createDatabase(cacheDir: string = DEFAULT_CACHE_DIR): {
|
|
|
28
29
|
|
|
29
30
|
export function runMigrations(db: ReturnType<typeof drizzle>) {
|
|
30
31
|
// Drizzle will look for migrations in drizzle/ directory
|
|
31
|
-
|
|
32
|
+
// Use absolute path relative to package installation
|
|
33
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
34
|
+
const __dirname = dirname(__filename);
|
|
35
|
+
const migrationsFolder = join(__dirname, '../../drizzle');
|
|
36
|
+
migrate(db, { migrationsFolder });
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
export type DB = ReturnType<typeof createDatabase>['db'];
|
package/src/lib/proxy-server.ts
CHANGED
|
@@ -65,46 +65,61 @@ export class ProxyServer {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
private setupHandlers(): void {
|
|
68
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () =>
|
|
69
|
-
tools
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
69
|
+
// Try to fetch tools from upstream if connected
|
|
70
|
+
if (this.connectionManager.getState() === 'connected') {
|
|
71
|
+
try {
|
|
72
|
+
const tools = await this.connectionManager.execute(async () => {
|
|
73
|
+
return await this.qwickbrainClient.listTools();
|
|
74
|
+
});
|
|
75
|
+
return { tools };
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error('Failed to list tools from upstream:', error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Fallback to minimal tool set when offline or error
|
|
82
|
+
return {
|
|
83
|
+
tools: [
|
|
84
|
+
{
|
|
85
|
+
name: 'get_workflow',
|
|
86
|
+
description: 'Get a workflow definition by name (cached)',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
name: { type: 'string', description: 'Workflow name' },
|
|
91
|
+
},
|
|
92
|
+
required: ['name'],
|
|
77
93
|
},
|
|
78
|
-
required: ['name'],
|
|
79
94
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
95
|
+
{
|
|
96
|
+
name: 'get_document',
|
|
97
|
+
description: 'Get a document by name and type (cached)',
|
|
98
|
+
inputSchema: {
|
|
99
|
+
type: 'object',
|
|
100
|
+
properties: {
|
|
101
|
+
name: { type: 'string', description: 'Document name' },
|
|
102
|
+
doc_type: { type: 'string', description: 'Document type (rule, frd, design, etc.)' },
|
|
103
|
+
project: { type: 'string', description: 'Project name (optional)' },
|
|
104
|
+
},
|
|
105
|
+
required: ['name', 'doc_type'],
|
|
90
106
|
},
|
|
91
|
-
required: ['name', 'doc_type'],
|
|
92
107
|
},
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
108
|
+
{
|
|
109
|
+
name: 'get_memory',
|
|
110
|
+
description: 'Get a memory/context document by name (cached)',
|
|
111
|
+
inputSchema: {
|
|
112
|
+
type: 'object',
|
|
113
|
+
properties: {
|
|
114
|
+
name: { type: 'string', description: 'Memory name' },
|
|
115
|
+
project: { type: 'string', description: 'Project name (optional)' },
|
|
116
|
+
},
|
|
117
|
+
required: ['name'],
|
|
102
118
|
},
|
|
103
|
-
required: ['name'],
|
|
104
119
|
},
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
})
|
|
120
|
+
],
|
|
121
|
+
};
|
|
122
|
+
});
|
|
108
123
|
|
|
109
124
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
110
125
|
const { name, arguments: args } = request.params;
|
|
@@ -112,6 +127,7 @@ export class ProxyServer {
|
|
|
112
127
|
try {
|
|
113
128
|
let result: MCPResponse;
|
|
114
129
|
|
|
130
|
+
// Handle cacheable document tools specially
|
|
115
131
|
switch (name) {
|
|
116
132
|
case 'get_workflow':
|
|
117
133
|
result = await this.handleGetWorkflow(args?.name as string);
|
|
@@ -130,7 +146,9 @@ export class ProxyServer {
|
|
|
130
146
|
);
|
|
131
147
|
break;
|
|
132
148
|
default:
|
|
133
|
-
|
|
149
|
+
// Generic forwarding for all other tools (analyze_repository, search_codebase, etc.)
|
|
150
|
+
result = await this.handleGenericTool(name, args || {});
|
|
151
|
+
break;
|
|
134
152
|
}
|
|
135
153
|
|
|
136
154
|
return {
|
|
@@ -292,6 +310,57 @@ export class ProxyServer {
|
|
|
292
310
|
};
|
|
293
311
|
}
|
|
294
312
|
|
|
313
|
+
private async handleGenericTool(name: string, args: Record<string, unknown>): Promise<MCPResponse> {
|
|
314
|
+
// Generic tool forwarding - no caching for non-document tools
|
|
315
|
+
if (this.connectionManager.getState() !== 'connected') {
|
|
316
|
+
return {
|
|
317
|
+
error: {
|
|
318
|
+
code: 'UNAVAILABLE',
|
|
319
|
+
message: `QwickBrain unavailable - cannot call tool: ${name}`,
|
|
320
|
+
suggestions: [
|
|
321
|
+
'Check internet connection',
|
|
322
|
+
'Wait for automatic reconnection',
|
|
323
|
+
],
|
|
324
|
+
},
|
|
325
|
+
_metadata: this.createMetadata('cache'),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
try {
|
|
330
|
+
const result = await this.connectionManager.execute(async () => {
|
|
331
|
+
return await this.qwickbrainClient.callTool(name, args);
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
// Parse the MCP response format
|
|
335
|
+
if (result && typeof result === 'object' && 'content' in result) {
|
|
336
|
+
const content = (result as any).content;
|
|
337
|
+
if (Array.isArray(content) && content[0]?.type === 'text') {
|
|
338
|
+
// Parse the text content as JSON
|
|
339
|
+
const data = JSON.parse(content[0].text);
|
|
340
|
+
return {
|
|
341
|
+
data,
|
|
342
|
+
_metadata: this.createMetadata('live'),
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Fallback: return raw result
|
|
348
|
+
return {
|
|
349
|
+
data: result,
|
|
350
|
+
_metadata: this.createMetadata('live'),
|
|
351
|
+
};
|
|
352
|
+
} catch (error) {
|
|
353
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
354
|
+
return {
|
|
355
|
+
error: {
|
|
356
|
+
code: 'TOOL_ERROR',
|
|
357
|
+
message: `Tool call failed: ${errorMessage}`,
|
|
358
|
+
},
|
|
359
|
+
_metadata: this.createMetadata('cache'),
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
295
364
|
async start(): Promise<void> {
|
|
296
365
|
// Clean up expired cache entries on startup
|
|
297
366
|
const { documentsDeleted, memoriesDeleted } = await this.cacheManager.cleanupExpiredEntries();
|
|
@@ -250,6 +250,62 @@ export class QwickBrainClient {
|
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
+
async listTools(): Promise<Array<{ name: string; description?: string; inputSchema?: unknown }>> {
|
|
254
|
+
if (this.mode === 'mcp' || this.mode === 'sse') {
|
|
255
|
+
if (!this.client) {
|
|
256
|
+
throw new Error('MCP client not connected');
|
|
257
|
+
}
|
|
258
|
+
const result = await this.client.listTools();
|
|
259
|
+
return result.tools;
|
|
260
|
+
} else {
|
|
261
|
+
// For HTTP mode, fetch tools from API
|
|
262
|
+
if (!this.config.url) {
|
|
263
|
+
throw new Error('HTTP mode requires url to be configured');
|
|
264
|
+
}
|
|
265
|
+
const response = await fetch(`${this.config.url}/mcp/tools`, {
|
|
266
|
+
headers: {
|
|
267
|
+
...(this.config.apiKey && { 'Authorization': `Bearer ${this.config.apiKey}` }),
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
if (!response.ok) {
|
|
271
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
272
|
+
}
|
|
273
|
+
const json = await response.json() as { tools: Array<{ name: string; description?: string; inputSchema?: unknown }> };
|
|
274
|
+
return json.tools;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
async callTool(name: string, args?: Record<string, unknown>): Promise<unknown> {
|
|
279
|
+
if (this.mode === 'mcp' || this.mode === 'sse') {
|
|
280
|
+
if (!this.client) {
|
|
281
|
+
throw new Error('MCP client not connected');
|
|
282
|
+
}
|
|
283
|
+
const result = await this.client.callTool({
|
|
284
|
+
name,
|
|
285
|
+
arguments: args || {},
|
|
286
|
+
});
|
|
287
|
+
// Return the raw result - let the caller parse it
|
|
288
|
+
return result;
|
|
289
|
+
} else {
|
|
290
|
+
// For HTTP mode, call tool via API
|
|
291
|
+
if (!this.config.url) {
|
|
292
|
+
throw new Error('HTTP mode requires url to be configured');
|
|
293
|
+
}
|
|
294
|
+
const response = await fetch(`${this.config.url}/mcp/tool`, {
|
|
295
|
+
method: 'POST',
|
|
296
|
+
headers: {
|
|
297
|
+
'Content-Type': 'application/json',
|
|
298
|
+
...(this.config.apiKey && { 'Authorization': `Bearer ${this.config.apiKey}` }),
|
|
299
|
+
},
|
|
300
|
+
body: JSON.stringify({ name, arguments: args || {} }),
|
|
301
|
+
});
|
|
302
|
+
if (!response.ok) {
|
|
303
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
304
|
+
}
|
|
305
|
+
return response.json();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
253
309
|
async disconnect(): Promise<void> {
|
|
254
310
|
if ((this.mode === 'mcp' || this.mode === 'sse') && this.client && this.transport) {
|
|
255
311
|
await this.client.close();
|