opalserve 0.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/.env.example +19 -0
- package/AGENTS.md +23 -0
- package/README.md +109 -0
- package/config/servers.example.yaml +67 -0
- package/config/servers.yaml +2 -0
- package/dist/cli/discover.d.ts +3 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +160 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +32 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/connectors/base.d.ts +49 -0
- package/dist/connectors/base.d.ts.map +1 -0
- package/dist/connectors/base.js +45 -0
- package/dist/connectors/base.js.map +1 -0
- package/dist/connectors/custom.d.ts +19 -0
- package/dist/connectors/custom.d.ts.map +1 -0
- package/dist/connectors/custom.js +129 -0
- package/dist/connectors/custom.js.map +1 -0
- package/dist/connectors/github.d.ts +18 -0
- package/dist/connectors/github.d.ts.map +1 -0
- package/dist/connectors/github.js +188 -0
- package/dist/connectors/github.js.map +1 -0
- package/dist/connectors/google-drive.d.ts +18 -0
- package/dist/connectors/google-drive.d.ts.map +1 -0
- package/dist/connectors/google-drive.js +209 -0
- package/dist/connectors/google-drive.js.map +1 -0
- package/dist/connectors/index.d.ts +11 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +76 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/postgres.d.ts +18 -0
- package/dist/connectors/postgres.d.ts.map +1 -0
- package/dist/connectors/postgres.js +140 -0
- package/dist/connectors/postgres.js.map +1 -0
- package/dist/connectors/slack.d.ts +18 -0
- package/dist/connectors/slack.d.ts.map +1 -0
- package/dist/connectors/slack.js +181 -0
- package/dist/connectors/slack.js.map +1 -0
- package/dist/core/auth.d.ts +26 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +81 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/registry.d.ts +33 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +237 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/tokenizer.d.ts +16 -0
- package/dist/core/tokenizer.d.ts.map +1 -0
- package/dist/core/tokenizer.js +29 -0
- package/dist/core/tokenizer.js.map +1 -0
- package/dist/governance/audit.d.ts +27 -0
- package/dist/governance/audit.d.ts.map +1 -0
- package/dist/governance/audit.js +149 -0
- package/dist/governance/audit.js.map +1 -0
- package/dist/governance/index.d.ts +5 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +5 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/policy.d.ts +20 -0
- package/dist/governance/policy.d.ts.map +1 -0
- package/dist/governance/policy.js +162 -0
- package/dist/governance/policy.js.map +1 -0
- package/dist/governance/rate-limiter.d.ts +20 -0
- package/dist/governance/rate-limiter.d.ts.map +1 -0
- package/dist/governance/rate-limiter.js +73 -0
- package/dist/governance/rate-limiter.js.map +1 -0
- package/dist/governance/types.d.ts +246 -0
- package/dist/governance/types.d.ts.map +1 -0
- package/dist/governance/types.js +72 -0
- package/dist/governance/types.js.map +1 -0
- package/dist/identity/access-control.d.ts +15 -0
- package/dist/identity/access-control.d.ts.map +1 -0
- package/dist/identity/access-control.js +81 -0
- package/dist/identity/access-control.js.map +1 -0
- package/dist/identity/index.d.ts +4 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +4 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/manager.d.ts +29 -0
- package/dist/identity/manager.d.ts.map +1 -0
- package/dist/identity/manager.js +167 -0
- package/dist/identity/manager.js.map +1 -0
- package/dist/identity/types.d.ts +237 -0
- package/dist/identity/types.d.ts.map +1 -0
- package/dist/identity/types.js +80 -0
- package/dist/identity/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/server.d.ts +14 -0
- package/dist/registry/server.d.ts.map +1 -0
- package/dist/registry/server.js +173 -0
- package/dist/registry/server.js.map +1 -0
- package/dist/types/index.d.ts +639 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +76 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +29 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +47 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +44 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/workflow/engine.d.ts +18 -0
- package/dist/workflow/engine.d.ts.map +1 -0
- package/dist/workflow/engine.js +155 -0
- package/dist/workflow/engine.js.map +1 -0
- package/dist/workflow/index.d.ts +4 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +4 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/templates.d.ts +4 -0
- package/dist/workflow/templates.d.ts.map +1 -0
- package/dist/workflow/templates.js +218 -0
- package/dist/workflow/templates.js.map +1 -0
- package/dist/workflow/types.d.ts +255 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +48 -0
- package/dist/workflow/types.js.map +1 -0
- package/eslint.config.js +25 -0
- package/package.json +78 -0
- package/src/cli/discover.ts +223 -0
- package/src/cli/index.ts +40 -0
- package/src/connectors/base.ts +75 -0
- package/src/connectors/custom.ts +139 -0
- package/src/connectors/github.ts +195 -0
- package/src/connectors/google-drive.ts +217 -0
- package/src/connectors/index.ts +86 -0
- package/src/connectors/postgres.ts +148 -0
- package/src/connectors/slack.ts +188 -0
- package/src/core/auth.ts +109 -0
- package/src/core/registry.ts +301 -0
- package/src/core/tokenizer.ts +40 -0
- package/src/governance/audit.ts +182 -0
- package/src/governance/index.ts +4 -0
- package/src/governance/policy.ts +187 -0
- package/src/governance/rate-limiter.ts +95 -0
- package/src/governance/types.ts +100 -0
- package/src/identity/access-control.ts +119 -0
- package/src/identity/index.ts +3 -0
- package/src/identity/manager.ts +207 -0
- package/src/identity/types.ts +91 -0
- package/src/index.ts +16 -0
- package/src/registry/server.ts +195 -0
- package/src/types/index.ts +128 -0
- package/src/utils/config.ts +78 -0
- package/src/utils/index.ts +47 -0
- package/src/workflow/engine.ts +187 -0
- package/src/workflow/index.ts +3 -0
- package/src/workflow/templates.ts +220 -0
- package/src/workflow/types.ts +89 -0
- package/tsconfig.json +25 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export { BaseConnector } from './base.js';
|
|
2
|
+
export { GitHubConnector } from './github.js';
|
|
3
|
+
export { SlackConnector } from './slack.js';
|
|
4
|
+
export { PostgresConnector } from './postgres.js';
|
|
5
|
+
export { GoogleDriveConnector } from './google-drive.js';
|
|
6
|
+
export { CustomConnector } from './custom.js';
|
|
7
|
+
import { GitHubConnector } from './github.js';
|
|
8
|
+
import { SlackConnector } from './slack.js';
|
|
9
|
+
import { PostgresConnector } from './postgres.js';
|
|
10
|
+
import { GoogleDriveConnector } from './google-drive.js';
|
|
11
|
+
import { CustomConnector } from './custom.js';
|
|
12
|
+
export function createConnector(type, config) {
|
|
13
|
+
switch (type) {
|
|
14
|
+
case 'github':
|
|
15
|
+
return new GitHubConnector(config);
|
|
16
|
+
case 'slack':
|
|
17
|
+
return new SlackConnector(config);
|
|
18
|
+
case 'postgres':
|
|
19
|
+
return new PostgresConnector(config);
|
|
20
|
+
case 'google-drive':
|
|
21
|
+
return new GoogleDriveConnector(config);
|
|
22
|
+
case 'custom':
|
|
23
|
+
return new CustomConnector(config);
|
|
24
|
+
default:
|
|
25
|
+
throw new Error(`Unknown connector type: ${type}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function createAllConnectors() {
|
|
29
|
+
const connectors = new Map();
|
|
30
|
+
connectors.set('github', new GitHubConnector({
|
|
31
|
+
serverId: 'github',
|
|
32
|
+
auth: { type: 'api-key' },
|
|
33
|
+
}));
|
|
34
|
+
connectors.set('slack', new SlackConnector({
|
|
35
|
+
serverId: 'slack',
|
|
36
|
+
auth: { type: 'api-key' },
|
|
37
|
+
}));
|
|
38
|
+
connectors.set('postgres', new PostgresConnector({
|
|
39
|
+
serverId: 'postgres',
|
|
40
|
+
auth: { type: 'none' },
|
|
41
|
+
}));
|
|
42
|
+
connectors.set('google-drive', new GoogleDriveConnector({
|
|
43
|
+
serverId: 'google-drive',
|
|
44
|
+
auth: { type: 'oauth' },
|
|
45
|
+
}));
|
|
46
|
+
connectors.set('custom', new CustomConnector({
|
|
47
|
+
serverId: 'custom',
|
|
48
|
+
auth: { type: 'none' },
|
|
49
|
+
}));
|
|
50
|
+
return connectors;
|
|
51
|
+
}
|
|
52
|
+
export function createServerFromConnector(connector) {
|
|
53
|
+
return {
|
|
54
|
+
id: connector.id,
|
|
55
|
+
name: connector.name,
|
|
56
|
+
type: connector.type,
|
|
57
|
+
status: 'active',
|
|
58
|
+
description: `MCP server for ${connector.name}`,
|
|
59
|
+
version: '1.0.0',
|
|
60
|
+
capabilities: ['read', 'write'],
|
|
61
|
+
tags: [connector.type, 'mcp'],
|
|
62
|
+
health: {
|
|
63
|
+
status: 'healthy',
|
|
64
|
+
lastChecked: new Date().toISOString(),
|
|
65
|
+
errorCount: 0,
|
|
66
|
+
},
|
|
67
|
+
auth: {
|
|
68
|
+
type: 'none',
|
|
69
|
+
configured: false,
|
|
70
|
+
},
|
|
71
|
+
metadata: {},
|
|
72
|
+
registeredAt: new Date().toISOString(),
|
|
73
|
+
lastSeen: new Date().toISOString(),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseConnector } from './base.js';
|
|
2
|
+
import { ConnectorConfig, Tool } from '../types/index.js';
|
|
3
|
+
export declare class PostgresConnector extends BaseConnector {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
type: string;
|
|
7
|
+
private connectionUrl?;
|
|
8
|
+
constructor(config: ConnectorConfig);
|
|
9
|
+
connect(): Promise<void>;
|
|
10
|
+
disconnect(): Promise<void>;
|
|
11
|
+
healthCheck(): Promise<{
|
|
12
|
+
healthy: boolean;
|
|
13
|
+
latencyMs?: number;
|
|
14
|
+
}>;
|
|
15
|
+
refreshTools(): Promise<Tool[]>;
|
|
16
|
+
private buildTools;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/connectors/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,IAAI,EAAkB,MAAM,mBAAmB,CAAC;AA2G1E,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,EAAE,SAAc;IAChB,IAAI,SAAgB;IACpB,IAAI,SAAc;IAClB,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,MAAM,EAAE,eAAe;IAM7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAOhE,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIrC,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { BaseConnector } from './base.js';
|
|
2
|
+
const POSTGRES_TOOL_DEFS = [
|
|
3
|
+
{
|
|
4
|
+
name: 'postgres_query',
|
|
5
|
+
description: 'Execute a SQL query against the PostgreSQL database',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
sql: { type: 'string', description: 'SQL query to execute' },
|
|
10
|
+
params: { type: 'array', description: 'Query parameters' },
|
|
11
|
+
timeout: { type: 'number', description: 'Query timeout in milliseconds' },
|
|
12
|
+
},
|
|
13
|
+
required: ['sql'],
|
|
14
|
+
},
|
|
15
|
+
tags: ['database', 'sql', 'postgres', 'query'],
|
|
16
|
+
capabilities: ['read', 'write', 'query'],
|
|
17
|
+
authRequirements: { required: ['postgres_url'] },
|
|
18
|
+
contextRequirements: { minTokens: 50, maxTokens: 500 },
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'postgres_list_tables',
|
|
22
|
+
description: 'List all tables in the database schema',
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
schema: { type: 'string', default: 'public', description: 'Database schema name' },
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
tags: ['database', 'schema', 'postgres', 'tables'],
|
|
30
|
+
capabilities: ['read', 'metadata'],
|
|
31
|
+
authRequirements: { required: ['postgres_url'] },
|
|
32
|
+
contextRequirements: { minTokens: 30, maxTokens: 300 },
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'postgres_describe_table',
|
|
36
|
+
description: 'Get the schema/structure of a specific table',
|
|
37
|
+
inputSchema: {
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties: {
|
|
40
|
+
table: { type: 'string', description: 'Table name' },
|
|
41
|
+
schema: { type: 'string', default: 'public', description: 'Schema name' },
|
|
42
|
+
},
|
|
43
|
+
required: ['table'],
|
|
44
|
+
},
|
|
45
|
+
tags: ['database', 'schema', 'postgres', 'structure'],
|
|
46
|
+
capabilities: ['read', 'metadata'],
|
|
47
|
+
authRequirements: { required: ['postgres_url'] },
|
|
48
|
+
contextRequirements: { minTokens: 30, maxTokens: 200 },
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'postgres_execute_transaction',
|
|
52
|
+
description: 'Execute multiple SQL statements as a transaction',
|
|
53
|
+
inputSchema: {
|
|
54
|
+
type: 'object',
|
|
55
|
+
properties: {
|
|
56
|
+
statements: {
|
|
57
|
+
type: 'array',
|
|
58
|
+
items: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
sql: { type: 'string' },
|
|
62
|
+
params: { type: 'array' },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
description: 'Array of SQL statements to execute',
|
|
66
|
+
},
|
|
67
|
+
rollbackOnError: { type: 'boolean', default: true },
|
|
68
|
+
},
|
|
69
|
+
required: ['statements'],
|
|
70
|
+
},
|
|
71
|
+
tags: ['database', 'transaction', 'postgres'],
|
|
72
|
+
capabilities: ['write', 'transaction'],
|
|
73
|
+
authRequirements: { required: ['postgres_url'] },
|
|
74
|
+
contextRequirements: { minTokens: 50, maxTokens: 500 },
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'postgres_list_databases',
|
|
78
|
+
description: 'List all accessible databases',
|
|
79
|
+
inputSchema: {
|
|
80
|
+
type: 'object',
|
|
81
|
+
properties: {},
|
|
82
|
+
},
|
|
83
|
+
tags: ['database', 'postgres', 'list'],
|
|
84
|
+
capabilities: ['read', 'metadata'],
|
|
85
|
+
authRequirements: { required: ['postgres_url'] },
|
|
86
|
+
contextRequirements: { minTokens: 30, maxTokens: 200 },
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'postgres_explain_query',
|
|
90
|
+
description: 'Get the query execution plan without running the query',
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
sql: { type: 'string', description: 'SQL query to explain' },
|
|
95
|
+
analyze: { type: 'boolean', default: false, description: 'Run the query and show actual timings' },
|
|
96
|
+
verbose: { type: 'boolean', default: false },
|
|
97
|
+
},
|
|
98
|
+
required: ['sql'],
|
|
99
|
+
},
|
|
100
|
+
tags: ['database', 'postgres', 'optimization', 'explain'],
|
|
101
|
+
capabilities: ['read', 'analyze'],
|
|
102
|
+
authRequirements: { required: ['postgres_url'] },
|
|
103
|
+
contextRequirements: { minTokens: 50, maxTokens: 400 },
|
|
104
|
+
},
|
|
105
|
+
];
|
|
106
|
+
export class PostgresConnector extends BaseConnector {
|
|
107
|
+
id = 'postgres';
|
|
108
|
+
name = 'PostgreSQL';
|
|
109
|
+
type = 'postgres';
|
|
110
|
+
connectionUrl;
|
|
111
|
+
constructor(config) {
|
|
112
|
+
super(config);
|
|
113
|
+
this.connectionUrl = config.auth?.credentials?.url;
|
|
114
|
+
this.tools = this.buildTools();
|
|
115
|
+
}
|
|
116
|
+
async connect() {
|
|
117
|
+
if (!this.connectionUrl) {
|
|
118
|
+
console.warn('PostgreSQL connection URL not configured');
|
|
119
|
+
this.connected = true;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.connected = true;
|
|
123
|
+
}
|
|
124
|
+
async disconnect() {
|
|
125
|
+
this.connected = false;
|
|
126
|
+
}
|
|
127
|
+
async healthCheck() {
|
|
128
|
+
const { result, latencyMs } = await this.measureLatency(async () => {
|
|
129
|
+
return this.connected && !!this.connectionUrl;
|
|
130
|
+
});
|
|
131
|
+
return { healthy: result, latencyMs };
|
|
132
|
+
}
|
|
133
|
+
async refreshTools() {
|
|
134
|
+
return this.tools;
|
|
135
|
+
}
|
|
136
|
+
buildTools() {
|
|
137
|
+
return POSTGRES_TOOL_DEFS.map(def => this.createTool(def));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/connectors/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseConnector } from './base.js';
|
|
2
|
+
import { ConnectorConfig, Tool } from '../types/index.js';
|
|
3
|
+
export declare class SlackConnector extends BaseConnector {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
type: string;
|
|
7
|
+
private token?;
|
|
8
|
+
constructor(config: ConnectorConfig);
|
|
9
|
+
connect(): Promise<void>;
|
|
10
|
+
disconnect(): Promise<void>;
|
|
11
|
+
healthCheck(): Promise<{
|
|
12
|
+
healthy: boolean;
|
|
13
|
+
latencyMs?: number;
|
|
14
|
+
}>;
|
|
15
|
+
refreshTools(): Promise<Tool[]>;
|
|
16
|
+
private buildTools;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=slack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/connectors/slack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,IAAI,EAAkB,MAAM,mBAAmB,CAAC;AA8I1E,qBAAa,cAAe,SAAQ,aAAa;IAC/C,EAAE,SAAW;IACb,IAAI,SAAW;IACf,IAAI,SAAW;IACf,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,MAAM,EAAE,eAAe;IAM7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAYhE,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIrC,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { BaseConnector } from './base.js';
|
|
2
|
+
const SLACK_TOOL_DEFS = [
|
|
3
|
+
{
|
|
4
|
+
name: 'slack_post_message',
|
|
5
|
+
description: 'Post a message to a Slack channel',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
channel: { type: 'string', description: 'Channel ID or name' },
|
|
10
|
+
text: { type: 'string', description: 'Message text' },
|
|
11
|
+
blocks: { type: 'array', description: 'Slack Block Kit blocks' },
|
|
12
|
+
thread_ts: { type: 'string', description: 'Parent message timestamp for threads' },
|
|
13
|
+
},
|
|
14
|
+
required: ['channel', 'text'],
|
|
15
|
+
},
|
|
16
|
+
tags: ['messaging', 'slack', 'post'],
|
|
17
|
+
capabilities: ['write', 'messaging'],
|
|
18
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
19
|
+
contextRequirements: { minTokens: 30, maxTokens: 200 },
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'slack_list_channels',
|
|
23
|
+
description: 'List all channels in the workspace',
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
properties: {
|
|
27
|
+
types: { type: 'array', items: { type: 'string' }, description: 'Channel types: public_channel, private_channel, im, mpim' },
|
|
28
|
+
exclude_archived: { type: 'boolean', default: true },
|
|
29
|
+
limit: { type: 'number', default: 100 },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
tags: ['channels', 'slack', 'list'],
|
|
33
|
+
capabilities: ['read', 'list'],
|
|
34
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
35
|
+
contextRequirements: { minTokens: 30, maxTokens: 300 },
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'slack_get_messages',
|
|
39
|
+
description: 'Retrieve messages from a Slack channel',
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: 'object',
|
|
42
|
+
properties: {
|
|
43
|
+
channel: { type: 'string', description: 'Channel ID' },
|
|
44
|
+
latest: { type: 'string', description: 'Most recent message timestamp' },
|
|
45
|
+
oldest: { type: 'string', description: 'Oldest message timestamp' },
|
|
46
|
+
limit: { type: 'number', default: 100 },
|
|
47
|
+
inclusive: { type: 'boolean', default: false },
|
|
48
|
+
},
|
|
49
|
+
required: ['channel'],
|
|
50
|
+
},
|
|
51
|
+
tags: ['messages', 'slack', 'read'],
|
|
52
|
+
capabilities: ['read', 'messaging'],
|
|
53
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
54
|
+
contextRequirements: { minTokens: 30, maxTokens: 500 },
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'slack_create_channel',
|
|
58
|
+
description: 'Create a new Slack channel',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
name: { type: 'string', description: 'Channel name' },
|
|
63
|
+
is_private: { type: 'boolean', default: false },
|
|
64
|
+
team_id: { type: 'string', description: 'Team to create channel in' },
|
|
65
|
+
},
|
|
66
|
+
required: ['name'],
|
|
67
|
+
},
|
|
68
|
+
tags: ['channels', 'slack', 'create'],
|
|
69
|
+
capabilities: ['write', 'create'],
|
|
70
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
71
|
+
contextRequirements: { minTokens: 30, maxTokens: 100 },
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'slack_invite_users',
|
|
75
|
+
description: 'Invite users to a Slack channel',
|
|
76
|
+
inputSchema: {
|
|
77
|
+
type: 'object',
|
|
78
|
+
properties: {
|
|
79
|
+
channel: { type: 'string', description: 'Channel ID' },
|
|
80
|
+
users: { type: 'array', items: { type: 'string' }, description: 'User IDs to invite' },
|
|
81
|
+
},
|
|
82
|
+
required: ['channel', 'users'],
|
|
83
|
+
},
|
|
84
|
+
tags: ['users', 'slack', 'invite'],
|
|
85
|
+
capabilities: ['write', 'admin'],
|
|
86
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
87
|
+
contextRequirements: { minTokens: 30, maxTokens: 100 },
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'slack_search_messages',
|
|
91
|
+
description: 'Search for messages across Slack',
|
|
92
|
+
inputSchema: {
|
|
93
|
+
type: 'object',
|
|
94
|
+
properties: {
|
|
95
|
+
query: { type: 'string', description: 'Search query' },
|
|
96
|
+
count: { type: 'number', default: 20 },
|
|
97
|
+
highlight: { type: 'boolean', default: true },
|
|
98
|
+
},
|
|
99
|
+
required: ['query'],
|
|
100
|
+
},
|
|
101
|
+
tags: ['search', 'slack', 'messages'],
|
|
102
|
+
capabilities: ['read', 'search'],
|
|
103
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
104
|
+
contextRequirements: { minTokens: 30, maxTokens: 400 },
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'slack_upload_file',
|
|
108
|
+
description: 'Upload a file to Slack',
|
|
109
|
+
inputSchema: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
properties: {
|
|
112
|
+
channels: { type: 'array', items: { type: 'string' }, description: 'Channel IDs' },
|
|
113
|
+
file: { type: 'string', description: 'File content or URL' },
|
|
114
|
+
filename: { type: 'string', description: 'File name' },
|
|
115
|
+
title: { type: 'string', description: 'File title' },
|
|
116
|
+
initial_comment: { type: 'string', description: 'Initial comment' },
|
|
117
|
+
},
|
|
118
|
+
required: ['channels', 'file', 'filename'],
|
|
119
|
+
},
|
|
120
|
+
tags: ['files', 'slack', 'upload'],
|
|
121
|
+
capabilities: ['write', 'upload'],
|
|
122
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
123
|
+
contextRequirements: { minTokens: 30, maxTokens: 200 },
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'slack_get_user_info',
|
|
127
|
+
description: 'Get information about a Slack user',
|
|
128
|
+
inputSchema: {
|
|
129
|
+
type: 'object',
|
|
130
|
+
properties: {
|
|
131
|
+
user: { type: 'string', description: 'User ID' },
|
|
132
|
+
},
|
|
133
|
+
required: ['user'],
|
|
134
|
+
},
|
|
135
|
+
tags: ['users', 'slack', 'info'],
|
|
136
|
+
capabilities: ['read', 'users'],
|
|
137
|
+
authRequirements: { required: ['slack_bot_token'] },
|
|
138
|
+
contextRequirements: { minTokens: 30, maxTokens: 200 },
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
export class SlackConnector extends BaseConnector {
|
|
142
|
+
id = 'slack';
|
|
143
|
+
name = 'Slack';
|
|
144
|
+
type = 'slack';
|
|
145
|
+
token;
|
|
146
|
+
constructor(config) {
|
|
147
|
+
super(config);
|
|
148
|
+
this.token = config.auth?.credentials?.token;
|
|
149
|
+
this.tools = this.buildTools();
|
|
150
|
+
}
|
|
151
|
+
async connect() {
|
|
152
|
+
if (!this.token) {
|
|
153
|
+
console.warn('Slack bot token not configured');
|
|
154
|
+
this.connected = true;
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.connected = true;
|
|
158
|
+
}
|
|
159
|
+
async disconnect() {
|
|
160
|
+
this.connected = false;
|
|
161
|
+
}
|
|
162
|
+
async healthCheck() {
|
|
163
|
+
const { result, latencyMs } = await this.measureLatency(async () => {
|
|
164
|
+
if (!this.token)
|
|
165
|
+
return false;
|
|
166
|
+
const response = await fetch('https://slack.com/api/auth.test', {
|
|
167
|
+
headers: { Authorization: `Bearer ${this.token}` },
|
|
168
|
+
});
|
|
169
|
+
const data = await response.json();
|
|
170
|
+
return data.ok === true;
|
|
171
|
+
});
|
|
172
|
+
return { healthy: result, latencyMs };
|
|
173
|
+
}
|
|
174
|
+
async refreshTools() {
|
|
175
|
+
return this.tools;
|
|
176
|
+
}
|
|
177
|
+
buildTools() {
|
|
178
|
+
return SLACK_TOOL_DEFS.map(def => this.createTool(def));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=slack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/connectors/slack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
+
export interface AuthContext {
|
|
3
|
+
agentId: string;
|
|
4
|
+
permissions: string[];
|
|
5
|
+
context: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export interface JWTPayload {
|
|
8
|
+
agentId: string;
|
|
9
|
+
permissions: string[];
|
|
10
|
+
context: Record<string, unknown>;
|
|
11
|
+
iat: number;
|
|
12
|
+
exp: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class AuthService {
|
|
15
|
+
private secret;
|
|
16
|
+
private apiKey?;
|
|
17
|
+
constructor(secret: string, apiKey?: string);
|
|
18
|
+
generateToken(context: AuthContext): string;
|
|
19
|
+
verifyToken(token: string): AuthContext | null;
|
|
20
|
+
verifyApiKey(key: string): boolean;
|
|
21
|
+
extractAuth(req: Request): AuthContext | null;
|
|
22
|
+
middleware(): (req: Request, res: Response, next: NextFunction) => void;
|
|
23
|
+
optionalAuth(): (req: Request, _res: Response, next: NextFunction) => void;
|
|
24
|
+
checkPermission(permission: string): (req: Request, res: Response, next: NextFunction) => void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK3C,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;IAY3C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAa9C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKlC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI;IAoB7C,UAAU,KACA,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY;IAWzD,YAAY,KACF,KAAK,OAAO,EAAE,MAAM,QAAQ,EAAE,MAAM,YAAY;IAS1D,eAAe,CAAC,UAAU,EAAE,MAAM,IACxB,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY;CAS1D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import jwt from 'jsonwebtoken';
|
|
2
|
+
export class AuthService {
|
|
3
|
+
secret;
|
|
4
|
+
apiKey;
|
|
5
|
+
constructor(secret, apiKey) {
|
|
6
|
+
this.secret = secret;
|
|
7
|
+
this.apiKey = apiKey;
|
|
8
|
+
}
|
|
9
|
+
generateToken(context) {
|
|
10
|
+
return jwt.sign({
|
|
11
|
+
agentId: context.agentId,
|
|
12
|
+
permissions: context.permissions,
|
|
13
|
+
context: context.context,
|
|
14
|
+
}, this.secret, { expiresIn: '24h' });
|
|
15
|
+
}
|
|
16
|
+
verifyToken(token) {
|
|
17
|
+
try {
|
|
18
|
+
const payload = jwt.verify(token, this.secret);
|
|
19
|
+
return {
|
|
20
|
+
agentId: payload.agentId,
|
|
21
|
+
permissions: payload.permissions,
|
|
22
|
+
context: payload.context,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
verifyApiKey(key) {
|
|
30
|
+
if (!this.apiKey)
|
|
31
|
+
return false;
|
|
32
|
+
return key === this.apiKey;
|
|
33
|
+
}
|
|
34
|
+
extractAuth(req) {
|
|
35
|
+
const authHeader = req.headers.authorization;
|
|
36
|
+
if (authHeader?.startsWith('Bearer ')) {
|
|
37
|
+
const token = authHeader.slice(7);
|
|
38
|
+
return this.verifyToken(token);
|
|
39
|
+
}
|
|
40
|
+
const apiKey = req.headers['x-api-key'];
|
|
41
|
+
if (apiKey && this.verifyApiKey(apiKey)) {
|
|
42
|
+
return {
|
|
43
|
+
agentId: 'api-key-user',
|
|
44
|
+
permissions: ['read', 'discover'],
|
|
45
|
+
context: {},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
middleware() {
|
|
51
|
+
return (req, res, next) => {
|
|
52
|
+
const auth = this.extractAuth(req);
|
|
53
|
+
if (!auth) {
|
|
54
|
+
res.status(401).json({ error: 'Unauthorized' });
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
req.auth = auth;
|
|
58
|
+
next();
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
optionalAuth() {
|
|
62
|
+
return (req, _res, next) => {
|
|
63
|
+
const auth = this.extractAuth(req);
|
|
64
|
+
if (auth) {
|
|
65
|
+
req.auth = auth;
|
|
66
|
+
}
|
|
67
|
+
next();
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
checkPermission(permission) {
|
|
71
|
+
return (req, res, next) => {
|
|
72
|
+
const auth = req.auth;
|
|
73
|
+
if (!auth || !auth.permissions.includes(permission)) {
|
|
74
|
+
res.status(403).json({ error: 'Forbidden', required: permission });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
next();
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Tool, Server, DiscoveryQuery, DiscoveryResult, MCPServer } from '../types/index.js';
|
|
2
|
+
export declare class ToolRegistry {
|
|
3
|
+
private tools;
|
|
4
|
+
private servers;
|
|
5
|
+
private serverInstances;
|
|
6
|
+
private tokenCounter;
|
|
7
|
+
constructor(contextBudget?: number);
|
|
8
|
+
registerTool(tool: Tool): void;
|
|
9
|
+
registerServer(server: Server): void;
|
|
10
|
+
registerServerInstance(instance: MCPServer): void;
|
|
11
|
+
removeTool(toolId: string): boolean;
|
|
12
|
+
removeServer(serverId: string): boolean;
|
|
13
|
+
getTool(toolId: string): Tool | undefined;
|
|
14
|
+
getServer(serverId: string): Server | undefined;
|
|
15
|
+
getAllTools(): Tool[];
|
|
16
|
+
getAllServers(): Server[];
|
|
17
|
+
getToolsByServer(serverId: string): Tool[];
|
|
18
|
+
discover(query: DiscoveryQuery): Promise<DiscoveryResult>;
|
|
19
|
+
private scoreAndFilterTools;
|
|
20
|
+
private calculateRelevance;
|
|
21
|
+
private getServersForTools;
|
|
22
|
+
private calculateContextUsed;
|
|
23
|
+
private findContextFitLimit;
|
|
24
|
+
private interpretQuery;
|
|
25
|
+
private generateSuggestions;
|
|
26
|
+
private buildSearchableText;
|
|
27
|
+
healthCheck(serverId: string): Promise<{
|
|
28
|
+
healthy: boolean;
|
|
29
|
+
latencyMs?: number;
|
|
30
|
+
}>;
|
|
31
|
+
refreshServer(serverId: string): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AASlG,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,YAAY,CAAe;gBAEvB,aAAa,GAAE,MAAe;IAI1C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAU9B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,sBAAsB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAIjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAInC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAWvC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/C,WAAW,IAAI,IAAI,EAAE;IAIrB,aAAa,IAAI,MAAM,EAAE;IAIzB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAMpC,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAsB/D,OAAO,CAAC,mBAAmB;IAqD3B,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,mBAAmB;IAUrB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAQhF,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAcrD"}
|