@double-coding/dsh-connectors 0.0.0-stage → 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/CONTRIBUTING.md +173 -0
- package/LICENSE +21 -0
- package/README.en.md +156 -0
- package/README.md +153 -2
- package/assets/readme/architecture.webp +0 -0
- package/assets/readme/hero-en.svg +62 -0
- package/assets/readme/hero.svg +62 -0
- package/assets/readme/panel.webp +0 -0
- package/cordis.patch.yml +8 -0
- package/dist/client.js +5385 -0
- package/dist/client.js.map +7 -0
- package/dist/host/catalog.d.ts +7 -0
- package/dist/host/catalog.js +15 -0
- package/dist/host/catalog.js.map +1 -0
- package/dist/host/cli/adapters.d.ts +69 -0
- package/dist/host/cli/adapters.js +577 -0
- package/dist/host/cli/adapters.js.map +1 -0
- package/dist/host/cli/exec.d.ts +34 -0
- package/dist/host/cli/exec.js +186 -0
- package/dist/host/cli/exec.js.map +1 -0
- package/dist/host/cli/service.d.ts +44 -0
- package/dist/host/cli/service.js +711 -0
- package/dist/host/cli/service.js.map +1 -0
- package/dist/host/cli/version.d.ts +1 -0
- package/dist/host/cli/version.js +16 -0
- package/dist/host/cli/version.js.map +1 -0
- package/dist/host/connections.d.ts +106 -0
- package/dist/host/connections.js +1207 -0
- package/dist/host/connections.js.map +1 -0
- package/dist/host/errors.d.ts +4 -0
- package/dist/host/errors.js +8 -0
- package/dist/host/errors.js.map +1 -0
- package/dist/host/instanceUrl.d.ts +1 -0
- package/dist/host/instanceUrl.js +27 -0
- package/dist/host/instanceUrl.js.map +1 -0
- package/dist/host/mcpServers.d.ts +19 -0
- package/dist/host/mcpServers.js +243 -0
- package/dist/host/mcpServers.js.map +1 -0
- package/dist/host/oauth.d.ts +49 -0
- package/dist/host/oauth.js +215 -0
- package/dist/host/oauth.js.map +1 -0
- package/dist/host/openExternal.d.ts +1 -0
- package/dist/host/openExternal.js +45 -0
- package/dist/host/openExternal.js.map +1 -0
- package/dist/host/providers.d.ts +105 -0
- package/dist/host/providers.js +199 -0
- package/dist/host/providers.js.map +1 -0
- package/dist/host/routes.d.ts +18 -0
- package/dist/host/routes.js +514 -0
- package/dist/host/routes.js.map +1 -0
- package/dist/host/sse-bridge.d.ts +1 -0
- package/dist/host/sse-bridge.js +168 -0
- package/dist/host/sse-bridge.js.map +1 -0
- package/dist/host/store.d.ts +184 -0
- package/dist/host/store.js +98 -0
- package/dist/host/store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/categories.d.ts +12 -0
- package/dist/shared/categories.js +59 -0
- package/dist/shared/categories.js.map +1 -0
- package/dist/shared/customConfig.d.ts +1 -0
- package/dist/shared/customConfig.js +2 -0
- package/dist/shared/customConfig.js.map +1 -0
- package/dist/shared/types.d.ts +222 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/package.json +96 -4
- package/providers/README.md +44 -0
- package/providers/amap/icon.png +0 -0
- package/providers/amap/provider.json +34 -0
- package/providers/baidu-netdisk/icon.png +0 -0
- package/providers/baidu-netdisk/provider.json +36 -0
- package/providers/circleci/icon.svg +1 -0
- package/providers/circleci/provider.json +29 -0
- package/providers/cloudflare-docs/icon.svg +1 -0
- package/providers/cloudflare-docs/provider.json +26 -0
- package/providers/context7/icon.png +0 -0
- package/providers/context7/provider.json +25 -0
- package/providers/deepwiki/icon.svg +5 -0
- package/providers/deepwiki/provider.json +26 -0
- package/providers/firecrawl/icon.png +0 -0
- package/providers/firecrawl/provider.json +40 -0
- package/providers/gitee/icon.svg +1 -0
- package/providers/gitee/provider.json +32 -0
- package/providers/github/icon.svg +1 -0
- package/providers/github/provider.json +33 -0
- package/providers/gitlab/icon.svg +1 -0
- package/providers/gitlab/provider.json +31 -0
- package/providers/gitlab-self-hosted/icon.svg +1 -0
- package/providers/gitlab-self-hosted/provider.json +39 -0
- package/providers/grafana/icon.svg +1 -0
- package/providers/grafana/provider.json +32 -0
- package/providers/linear/icon.svg +1 -0
- package/providers/linear/provider.json +41 -0
- package/providers/microsoft-learn/icon.svg +6 -0
- package/providers/microsoft-learn/provider.json +26 -0
- package/providers/neon/icon.svg +1 -0
- package/providers/neon/provider.json +41 -0
- package/providers/notion/icon.svg +1 -0
- package/providers/notion/provider.json +29 -0
- package/providers/posthog/icon.svg +1 -0
- package/providers/posthog/provider.json +38 -0
- package/providers/postman/icon.svg +1 -0
- package/providers/postman/provider.json +29 -0
- package/providers/qcc/icon.png +0 -0
- package/providers/qcc/provider.json +50 -0
- package/providers/sentry/icon.svg +1 -0
- package/providers/sentry/provider.json +30 -0
- package/providers/sourcegraph/icon.png +0 -0
- package/providers/sourcegraph/provider.json +32 -0
- package/providers/supabase/icon.svg +1 -0
- package/providers/supabase/provider.json +52 -0
- package/providers/tavily/icon.svg +4 -0
- package/providers/tavily/provider.json +41 -0
- package/providers/tencent-docs/icon.png +0 -0
- package/providers/tencent-docs/provider.json +34 -0
- package/providers/tencent-yuanbao-search/icon.png +0 -0
- package/providers/tencent-yuanbao-search/provider.json +32 -0
- package/providers/tianyancha/icon.png +0 -0
- package/providers/tianyancha/provider.json +34 -0
- package/providers/yunxiao/icon.svg +1 -0
- package/providers/yunxiao/provider.json +30 -0
- package/schema/provider.schema.json +325 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
import { Client, SSEClientTransport } from '@modelcontextprotocol/client';
|
|
3
|
+
const BRIDGE_NAME = 'dsh-sse-bridge';
|
|
4
|
+
const BRIDGE_VERSION = '0.1.0';
|
|
5
|
+
const FALLBACK_PROTOCOL_VERSION = '2025-06-18';
|
|
6
|
+
function fail(message) {
|
|
7
|
+
process.stderr.write(`[dsh-sse-bridge] ${message}\n`);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
function parseHeaders(raw) {
|
|
11
|
+
if (raw === undefined || raw.trim() === '')
|
|
12
|
+
return {};
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(raw);
|
|
15
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
16
|
+
fail('DSH_SSE_HEADERS 必须是 JSON 对象');
|
|
17
|
+
}
|
|
18
|
+
const headers = {};
|
|
19
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
20
|
+
if (typeof value !== 'string')
|
|
21
|
+
fail(`DSH_SSE_HEADERS.${key} 必须是字符串`);
|
|
22
|
+
headers[key] = value;
|
|
23
|
+
}
|
|
24
|
+
return headers;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
fail(`DSH_SSE_HEADERS 解析失败:${error instanceof Error ? error.message : String(error)}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const url = process.env.DSH_SSE_URL;
|
|
31
|
+
if (url === undefined || url.trim() === '')
|
|
32
|
+
fail('缺少 DSH_SSE_URL');
|
|
33
|
+
const headers = parseHeaders(process.env.DSH_SSE_HEADERS);
|
|
34
|
+
const client = new Client({ name: BRIDGE_NAME, version: BRIDGE_VERSION });
|
|
35
|
+
const transport = new SSEClientTransport(new URL(url), {
|
|
36
|
+
requestInit: { headers },
|
|
37
|
+
});
|
|
38
|
+
let protocolVersion = FALLBACK_PROTOCOL_VERSION;
|
|
39
|
+
function write(message) {
|
|
40
|
+
process.stdout.write(`${JSON.stringify(message)}\n`);
|
|
41
|
+
}
|
|
42
|
+
function errorMessage(error) {
|
|
43
|
+
return error instanceof Error ? error.message : String(error);
|
|
44
|
+
}
|
|
45
|
+
function errorCode(error) {
|
|
46
|
+
const code = error?.code;
|
|
47
|
+
return typeof code === 'number' ? code : -32603;
|
|
48
|
+
}
|
|
49
|
+
async function dispatch(request) {
|
|
50
|
+
try {
|
|
51
|
+
switch (request.method) {
|
|
52
|
+
case 'initialize': {
|
|
53
|
+
const requested = request.params?.protocolVersion;
|
|
54
|
+
if (typeof requested === 'string' && requested !== '')
|
|
55
|
+
protocolVersion = requested;
|
|
56
|
+
write({
|
|
57
|
+
jsonrpc: '2.0',
|
|
58
|
+
id: request.id,
|
|
59
|
+
result: {
|
|
60
|
+
protocolVersion,
|
|
61
|
+
capabilities: { tools: { listChanged: false } },
|
|
62
|
+
serverInfo: { name: BRIDGE_NAME, version: BRIDGE_VERSION },
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
case 'ping':
|
|
68
|
+
write({ jsonrpc: '2.0', id: request.id, result: {} });
|
|
69
|
+
return;
|
|
70
|
+
case 'tools/list': {
|
|
71
|
+
const cursor = request.params?.cursor;
|
|
72
|
+
const result = await client.listTools(typeof cursor === 'string' ? { cursor } : undefined);
|
|
73
|
+
write({ jsonrpc: '2.0', id: request.id, result });
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
case 'tools/call': {
|
|
77
|
+
const name = request.params?.name;
|
|
78
|
+
if (typeof name !== 'string' || name === '') {
|
|
79
|
+
write({ jsonrpc: '2.0', id: request.id, error: { code: -32602, message: 'tools/call 缺少工具名' } });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const args = request.params?.arguments;
|
|
83
|
+
const result = await client.callTool({
|
|
84
|
+
name,
|
|
85
|
+
arguments: typeof args === 'object' && args !== null && !Array.isArray(args)
|
|
86
|
+
? args
|
|
87
|
+
: {},
|
|
88
|
+
});
|
|
89
|
+
write({ jsonrpc: '2.0', id: request.id, result });
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
case 'logging/setLevel':
|
|
93
|
+
write({ jsonrpc: '2.0', id: request.id, result: {} });
|
|
94
|
+
return;
|
|
95
|
+
default:
|
|
96
|
+
write({
|
|
97
|
+
jsonrpc: '2.0',
|
|
98
|
+
id: request.id,
|
|
99
|
+
error: { code: -32601, message: `SSE 桥不支持方法 ${request.method}` },
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
write({
|
|
105
|
+
jsonrpc: '2.0',
|
|
106
|
+
id: request.id,
|
|
107
|
+
error: { code: errorCode(error), message: errorMessage(error) },
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function handleLine(line) {
|
|
112
|
+
const trimmed = line.trim();
|
|
113
|
+
if (trimmed === '')
|
|
114
|
+
return;
|
|
115
|
+
let message;
|
|
116
|
+
try {
|
|
117
|
+
message = JSON.parse(trimmed);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
write({ jsonrpc: '2.0', id: null, error: { code: -32700, message: '无法解析 JSON-RPC 消息' } });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (typeof message !== 'object' || message === null || Array.isArray(message))
|
|
124
|
+
return;
|
|
125
|
+
const record = message;
|
|
126
|
+
if (record.id === undefined || record.id === null)
|
|
127
|
+
return;
|
|
128
|
+
if (typeof record.method !== 'string')
|
|
129
|
+
return;
|
|
130
|
+
void dispatch({
|
|
131
|
+
jsonrpc: '2.0',
|
|
132
|
+
id: record.id,
|
|
133
|
+
method: record.method,
|
|
134
|
+
...(typeof record.params === 'object' && record.params !== null && !Array.isArray(record.params)
|
|
135
|
+
? { params: record.params }
|
|
136
|
+
: {}),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
client.onerror = error => {
|
|
140
|
+
process.stderr.write(`[dsh-sse-bridge] 上游连接错误:${errorMessage(error)}\n`);
|
|
141
|
+
process.exit(1);
|
|
142
|
+
};
|
|
143
|
+
transport.onclose = () => {
|
|
144
|
+
process.stderr.write('[dsh-sse-bridge] 上游 SSE 连接已关闭\n');
|
|
145
|
+
process.exit(1);
|
|
146
|
+
};
|
|
147
|
+
try {
|
|
148
|
+
await client.connect(transport);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
fail(`连接 SSE 服务失败:${errorMessage(error)}`);
|
|
152
|
+
}
|
|
153
|
+
let buffer = '';
|
|
154
|
+
process.stdin.setEncoding('utf8');
|
|
155
|
+
process.stdin.on('data', (chunk) => {
|
|
156
|
+
buffer += chunk;
|
|
157
|
+
let index = buffer.indexOf('\n');
|
|
158
|
+
while (index >= 0) {
|
|
159
|
+
const line = buffer.slice(0, index);
|
|
160
|
+
buffer = buffer.slice(index + 1);
|
|
161
|
+
handleLine(line);
|
|
162
|
+
index = buffer.indexOf('\n');
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
process.stdin.on('end', () => {
|
|
166
|
+
void client.close().finally(() => process.exit(0));
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=sse-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-bridge.js","sourceRoot":"","sources":["../../src/host/sse-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const connectionRecordSchema: z.ZodObject<{
|
|
3
|
+
key: z.ZodString;
|
|
4
|
+
connectorId: z.ZodString;
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
serverName: z.ZodString;
|
|
7
|
+
transport: z.ZodEnum<{
|
|
8
|
+
stdio: "stdio";
|
|
9
|
+
"streamable-http": "streamable-http";
|
|
10
|
+
sse: "sse";
|
|
11
|
+
}>;
|
|
12
|
+
url: z.ZodOptional<z.ZodString>;
|
|
13
|
+
command: z.ZodOptional<z.ZodString>;
|
|
14
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
16
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
17
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
18
|
+
auth: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
mode: z.ZodEnum<{
|
|
20
|
+
bearer: "bearer";
|
|
21
|
+
"api-key": "api-key";
|
|
22
|
+
}>;
|
|
23
|
+
header: z.ZodString;
|
|
24
|
+
prefix: z.ZodString;
|
|
25
|
+
token: z.ZodString;
|
|
26
|
+
}, z.core.$strip>>;
|
|
27
|
+
oauth: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
provider: z.ZodString;
|
|
29
|
+
clientId: z.ZodString;
|
|
30
|
+
clientSecret: z.ZodOptional<z.ZodString>;
|
|
31
|
+
redirectUri: z.ZodOptional<z.ZodString>;
|
|
32
|
+
tokenEndpoint: z.ZodString;
|
|
33
|
+
tokenMethod: z.ZodOptional<z.ZodEnum<{
|
|
34
|
+
POST: "POST";
|
|
35
|
+
GET: "GET";
|
|
36
|
+
}>>;
|
|
37
|
+
authorizationEndpoint: z.ZodString;
|
|
38
|
+
accessToken: z.ZodString;
|
|
39
|
+
refreshToken: z.ZodOptional<z.ZodString>;
|
|
40
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
42
|
+
resource: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>>;
|
|
44
|
+
oauthClient: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
clientId: z.ZodString;
|
|
46
|
+
clientSecret: z.ZodString;
|
|
47
|
+
}, z.core.$strip>>;
|
|
48
|
+
enabled: z.ZodBoolean;
|
|
49
|
+
lastError: z.ZodOptional<z.ZodString>;
|
|
50
|
+
createdAt: z.ZodNumber;
|
|
51
|
+
updatedAt: z.ZodNumber;
|
|
52
|
+
}, z.core.$strip>;
|
|
53
|
+
export type ConnectionRecord = z.infer<typeof connectionRecordSchema>;
|
|
54
|
+
export declare const customConnectorSchema: z.ZodObject<{
|
|
55
|
+
key: z.ZodString;
|
|
56
|
+
connectorId: z.ZodString;
|
|
57
|
+
name: z.ZodString;
|
|
58
|
+
serverName: z.ZodString;
|
|
59
|
+
transport: z.ZodEnum<{
|
|
60
|
+
stdio: "stdio";
|
|
61
|
+
"streamable-http": "streamable-http";
|
|
62
|
+
sse: "sse";
|
|
63
|
+
}>;
|
|
64
|
+
url: z.ZodOptional<z.ZodString>;
|
|
65
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
66
|
+
command: z.ZodOptional<z.ZodString>;
|
|
67
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
68
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
69
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
70
|
+
category: z.ZodOptional<z.ZodString>;
|
|
71
|
+
description: z.ZodOptional<z.ZodString>;
|
|
72
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
73
|
+
createdAt: z.ZodNumber;
|
|
74
|
+
updatedAt: z.ZodNumber;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
export type CustomConnectorRecord = z.infer<typeof customConnectorSchema>;
|
|
77
|
+
export declare function defineConnectorDomain(): {
|
|
78
|
+
name: string;
|
|
79
|
+
version: number;
|
|
80
|
+
tables: {
|
|
81
|
+
connections: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, {
|
|
82
|
+
key: string;
|
|
83
|
+
connectorId: string;
|
|
84
|
+
name: string;
|
|
85
|
+
serverName: string;
|
|
86
|
+
transport: "stdio" | "streamable-http" | "sse";
|
|
87
|
+
enabled: boolean;
|
|
88
|
+
createdAt: number;
|
|
89
|
+
updatedAt: number;
|
|
90
|
+
url?: string | undefined;
|
|
91
|
+
command?: string | undefined;
|
|
92
|
+
args?: string[] | undefined;
|
|
93
|
+
env?: Record<string, string> | undefined;
|
|
94
|
+
cwd?: string | undefined;
|
|
95
|
+
headers?: Record<string, string> | undefined;
|
|
96
|
+
auth?: {
|
|
97
|
+
mode: "bearer" | "api-key";
|
|
98
|
+
header: string;
|
|
99
|
+
prefix: string;
|
|
100
|
+
token: string;
|
|
101
|
+
} | undefined;
|
|
102
|
+
oauth?: {
|
|
103
|
+
provider: string;
|
|
104
|
+
clientId: string;
|
|
105
|
+
tokenEndpoint: string;
|
|
106
|
+
authorizationEndpoint: string;
|
|
107
|
+
accessToken: string;
|
|
108
|
+
clientSecret?: string | undefined;
|
|
109
|
+
redirectUri?: string | undefined;
|
|
110
|
+
tokenMethod?: "POST" | "GET" | undefined;
|
|
111
|
+
refreshToken?: string | undefined;
|
|
112
|
+
expiresAt?: number | undefined;
|
|
113
|
+
scope?: string | undefined;
|
|
114
|
+
resource?: string | undefined;
|
|
115
|
+
} | undefined;
|
|
116
|
+
oauthClient?: {
|
|
117
|
+
clientId: string;
|
|
118
|
+
clientSecret: string;
|
|
119
|
+
} | undefined;
|
|
120
|
+
lastError?: string | undefined;
|
|
121
|
+
}>;
|
|
122
|
+
custom_connectors: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, {
|
|
123
|
+
key: string;
|
|
124
|
+
connectorId: string;
|
|
125
|
+
name: string;
|
|
126
|
+
serverName: string;
|
|
127
|
+
transport: "stdio" | "streamable-http" | "sse";
|
|
128
|
+
createdAt: number;
|
|
129
|
+
updatedAt: number;
|
|
130
|
+
url?: string | undefined;
|
|
131
|
+
headers?: Record<string, string> | undefined;
|
|
132
|
+
command?: string | undefined;
|
|
133
|
+
args?: string[] | undefined;
|
|
134
|
+
env?: Record<string, string> | undefined;
|
|
135
|
+
cwd?: string | undefined;
|
|
136
|
+
category?: string | undefined;
|
|
137
|
+
description?: string | undefined;
|
|
138
|
+
examples?: string[] | undefined;
|
|
139
|
+
}>;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
export declare const cliConnectorRecordSchema: z.ZodObject<{
|
|
143
|
+
key: z.ZodString;
|
|
144
|
+
connectorId: z.ZodString;
|
|
145
|
+
installed: z.ZodOptional<z.ZodBoolean>;
|
|
146
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
147
|
+
installedVersion: z.ZodOptional<z.ZodString>;
|
|
148
|
+
authenticated: z.ZodBoolean;
|
|
149
|
+
account: z.ZodOptional<z.ZodObject<{
|
|
150
|
+
name: z.ZodOptional<z.ZodString>;
|
|
151
|
+
email: z.ZodOptional<z.ZodString>;
|
|
152
|
+
org: z.ZodOptional<z.ZodString>;
|
|
153
|
+
}, z.core.$strip>>;
|
|
154
|
+
skillsCount: z.ZodOptional<z.ZodNumber>;
|
|
155
|
+
lastError: z.ZodOptional<z.ZodString>;
|
|
156
|
+
lastCheckedAt: z.ZodOptional<z.ZodNumber>;
|
|
157
|
+
createdAt: z.ZodNumber;
|
|
158
|
+
updatedAt: z.ZodNumber;
|
|
159
|
+
}, z.core.$strip>;
|
|
160
|
+
export type CliConnectorRecord = z.infer<typeof cliConnectorRecordSchema>;
|
|
161
|
+
export declare function defineCliDomain(): {
|
|
162
|
+
name: string;
|
|
163
|
+
version: number;
|
|
164
|
+
tables: {
|
|
165
|
+
cli_connectors: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, {
|
|
166
|
+
key: string;
|
|
167
|
+
connectorId: string;
|
|
168
|
+
authenticated: boolean;
|
|
169
|
+
createdAt: number;
|
|
170
|
+
updatedAt: number;
|
|
171
|
+
installed?: boolean | undefined;
|
|
172
|
+
enabled?: boolean | undefined;
|
|
173
|
+
installedVersion?: string | undefined;
|
|
174
|
+
account?: {
|
|
175
|
+
name?: string | undefined;
|
|
176
|
+
email?: string | undefined;
|
|
177
|
+
org?: string | undefined;
|
|
178
|
+
} | undefined;
|
|
179
|
+
skillsCount?: number | undefined;
|
|
180
|
+
lastError?: string | undefined;
|
|
181
|
+
lastCheckedAt?: number | undefined;
|
|
182
|
+
}>;
|
|
183
|
+
};
|
|
184
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { defineDomain, domainTable } from '@deepseek-ai/dsh-storage-domain';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const authSchema = z.object({
|
|
4
|
+
mode: z.enum(['bearer', 'api-key']),
|
|
5
|
+
header: z.string().min(1),
|
|
6
|
+
prefix: z.string(),
|
|
7
|
+
token: z.string().min(1),
|
|
8
|
+
});
|
|
9
|
+
const oauthSchema = z.object({
|
|
10
|
+
provider: z.string().min(1),
|
|
11
|
+
clientId: z.string().min(1),
|
|
12
|
+
clientSecret: z.string().optional(),
|
|
13
|
+
redirectUri: z.string().url().optional(),
|
|
14
|
+
tokenEndpoint: z.string().url(),
|
|
15
|
+
tokenMethod: z.enum(['GET', 'POST']).optional(),
|
|
16
|
+
authorizationEndpoint: z.string().url(),
|
|
17
|
+
accessToken: z.string().min(1),
|
|
18
|
+
refreshToken: z.string().optional(),
|
|
19
|
+
expiresAt: z.number().optional(),
|
|
20
|
+
scope: z.string().optional(),
|
|
21
|
+
resource: z.string().url().optional(),
|
|
22
|
+
});
|
|
23
|
+
export const connectionRecordSchema = z.object({
|
|
24
|
+
key: z.string().min(1),
|
|
25
|
+
connectorId: z.string().min(1),
|
|
26
|
+
name: z.string().min(1),
|
|
27
|
+
serverName: z.string().min(1),
|
|
28
|
+
transport: z.enum(['streamable-http', 'sse', 'stdio']),
|
|
29
|
+
url: z.string().optional(),
|
|
30
|
+
command: z.string().optional(),
|
|
31
|
+
args: z.array(z.string()).optional(),
|
|
32
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
33
|
+
cwd: z.string().optional(),
|
|
34
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
35
|
+
auth: authSchema.optional(),
|
|
36
|
+
oauth: oauthSchema.optional(),
|
|
37
|
+
oauthClient: z.object({ clientId: z.string().min(1), clientSecret: z.string().min(1) }).optional(),
|
|
38
|
+
enabled: z.boolean(),
|
|
39
|
+
lastError: z.string().optional(),
|
|
40
|
+
createdAt: z.number(),
|
|
41
|
+
updatedAt: z.number(),
|
|
42
|
+
});
|
|
43
|
+
export const customConnectorSchema = z.object({
|
|
44
|
+
key: z.string().min(1),
|
|
45
|
+
connectorId: z.string().min(1),
|
|
46
|
+
name: z.string().min(1),
|
|
47
|
+
serverName: z.string().min(1),
|
|
48
|
+
transport: z.enum(['streamable-http', 'sse', 'stdio']),
|
|
49
|
+
url: z.string().optional(),
|
|
50
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
51
|
+
command: z.string().optional(),
|
|
52
|
+
args: z.array(z.string()).optional(),
|
|
53
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
54
|
+
cwd: z.string().optional(),
|
|
55
|
+
category: z.string().min(1).max(64).optional(),
|
|
56
|
+
description: z.string().min(1).max(120).optional(),
|
|
57
|
+
examples: z.array(z.string().min(1)).max(6).optional(),
|
|
58
|
+
createdAt: z.number(),
|
|
59
|
+
updatedAt: z.number(),
|
|
60
|
+
});
|
|
61
|
+
export function defineConnectorDomain() {
|
|
62
|
+
return defineDomain({
|
|
63
|
+
name: 'dsh_connectors',
|
|
64
|
+
version: 1,
|
|
65
|
+
tables: {
|
|
66
|
+
connections: domainTable(connectionRecordSchema),
|
|
67
|
+
custom_connectors: domainTable(customConnectorSchema),
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export const cliConnectorRecordSchema = z.object({
|
|
72
|
+
key: z.string().min(1),
|
|
73
|
+
connectorId: z.string().min(1),
|
|
74
|
+
installed: z.boolean().optional(),
|
|
75
|
+
enabled: z.boolean().optional(),
|
|
76
|
+
installedVersion: z.string().optional(),
|
|
77
|
+
authenticated: z.boolean(),
|
|
78
|
+
account: z.object({
|
|
79
|
+
name: z.string().optional(),
|
|
80
|
+
email: z.string().optional(),
|
|
81
|
+
org: z.string().optional(),
|
|
82
|
+
}).optional(),
|
|
83
|
+
skillsCount: z.number().int().nonnegative().optional(),
|
|
84
|
+
lastError: z.string().optional(),
|
|
85
|
+
lastCheckedAt: z.number().optional(),
|
|
86
|
+
createdAt: z.number(),
|
|
87
|
+
updatedAt: z.number(),
|
|
88
|
+
});
|
|
89
|
+
export function defineCliDomain() {
|
|
90
|
+
return defineDomain({
|
|
91
|
+
name: 'dsh_connectors_cli',
|
|
92
|
+
version: 1,
|
|
93
|
+
tables: {
|
|
94
|
+
cli_connectors: domainTable(cliConnectorRecordSchema),
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/host/store.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { loadBuiltinCatalog } from './host/catalog.js';
|
|
2
|
+
import { CliConnectorService } from './host/cli/service.js';
|
|
3
|
+
import { ConnectionService } from './host/connections.js';
|
|
4
|
+
import { registerRoutes } from './host/routes.js';
|
|
5
|
+
export const name = 'dsh-connectors';
|
|
6
|
+
export const version = '0.1.0';
|
|
7
|
+
export const inject = ['tools', 'storageDomain', 'loader', 'webServer'];
|
|
8
|
+
const SERVICES = ['tools', 'storageDomain', 'loader', 'webServer'];
|
|
9
|
+
export async function apply(ctx) {
|
|
10
|
+
const loose = ctx;
|
|
11
|
+
const capabilities = () => Object.fromEntries(SERVICES.map(service => [service, loose.get?.(service) !== undefined]));
|
|
12
|
+
const connections = new ConnectionService(ctx, () => loadBuiltinCatalog().cards);
|
|
13
|
+
const cli = new CliConnectorService(ctx);
|
|
14
|
+
const disposeRoutes = registerRoutes(ctx, { version, capabilities, connections, cli });
|
|
15
|
+
void connections.restore().catch((error) => {
|
|
16
|
+
console.warn('[dsh-connectors] restore connections failed', error);
|
|
17
|
+
});
|
|
18
|
+
const detectTimer = setTimeout(() => {
|
|
19
|
+
void cli.detectAll().catch((error) => {
|
|
20
|
+
console.warn('[dsh-connectors] CLI connector detect failed', error);
|
|
21
|
+
});
|
|
22
|
+
}, 2_000);
|
|
23
|
+
detectTimer.unref?.();
|
|
24
|
+
return () => {
|
|
25
|
+
clearTimeout(detectTimer);
|
|
26
|
+
disposeRoutes();
|
|
27
|
+
void connections.dispose().catch((error) => {
|
|
28
|
+
console.warn('[dsh-connectors] close storage failed', error);
|
|
29
|
+
});
|
|
30
|
+
void cli.dispose().catch((error) => {
|
|
31
|
+
console.warn('[dsh-connectors] close CLI storage failed', error);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAA0B,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAA;AACpC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;AAEvE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAA;AAM3E,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAY;IACtC,MAAM,KAAK,GAAG,GAAmB,CAAA;IACjC,MAAM,YAAY,GAAG,GAA4B,EAAE,CACjD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAA;IAE5F,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,GAAmC,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAA;IAChH,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,GAAmC,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;IAEtF,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAClD,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAClC,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,KAAK,CAAC,CAAA;IACT,WAAW,CAAC,KAAK,EAAE,EAAE,CAAA;IAErB,OAAO,GAAG,EAAE;QACV,YAAY,CAAC,WAAW,CAAC,CAAA;QACzB,aAAa,EAAE,CAAA;QACf,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAClD,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QACF,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC1C,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const BUILTIN_CATEGORIES: readonly ["开发工具", "项目管理", "数据库", "知识检索", "办公协作", "安全运维", "数据分析", "其他"];
|
|
2
|
+
export declare const MAX_CATEGORY_LENGTH = 16;
|
|
3
|
+
export declare const MAX_EXAMPLES = 6;
|
|
4
|
+
export declare function cleanCategory(value: string): string;
|
|
5
|
+
export declare function categoryKey(value: string): string;
|
|
6
|
+
export declare function canonicalBuiltinCategory(value: string): string | undefined;
|
|
7
|
+
export declare function validateCategory(value: string): string | undefined;
|
|
8
|
+
export declare function resolveCategory(value: string | undefined, fallback?: string): string;
|
|
9
|
+
export declare function parseExampleLines(value: string): string[];
|
|
10
|
+
export declare function canonicalizeCardCategories<T extends {
|
|
11
|
+
category: string;
|
|
12
|
+
}>(cards: T[]): T[];
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export const BUILTIN_CATEGORIES = ['开发工具', '项目管理', '数据库', '知识检索', '办公协作', '安全运维', '数据分析', '其他'];
|
|
2
|
+
export const MAX_CATEGORY_LENGTH = 16;
|
|
3
|
+
export const MAX_EXAMPLES = 6;
|
|
4
|
+
const RESERVED_CATEGORIES = ['全部', '自定义'];
|
|
5
|
+
const CONTROL_CHARS = /[\u0000-\u001F\u007F]/;
|
|
6
|
+
export function cleanCategory(value) {
|
|
7
|
+
return value.trim().replace(/\s+/g, ' ');
|
|
8
|
+
}
|
|
9
|
+
export function categoryKey(value) {
|
|
10
|
+
return cleanCategory(value).toLocaleLowerCase();
|
|
11
|
+
}
|
|
12
|
+
export function canonicalBuiltinCategory(value) {
|
|
13
|
+
const key = categoryKey(value);
|
|
14
|
+
return BUILTIN_CATEGORIES.find(category => categoryKey(category) === key);
|
|
15
|
+
}
|
|
16
|
+
export function validateCategory(value) {
|
|
17
|
+
const cleaned = cleanCategory(value);
|
|
18
|
+
if (cleaned === '')
|
|
19
|
+
return '类别不能为空';
|
|
20
|
+
if (Array.from(cleaned).length > MAX_CATEGORY_LENGTH)
|
|
21
|
+
return `类别最多 ${MAX_CATEGORY_LENGTH} 个字`;
|
|
22
|
+
if (CONTROL_CHARS.test(cleaned))
|
|
23
|
+
return '类别不能包含控制字符';
|
|
24
|
+
if (RESERVED_CATEGORIES.some(item => categoryKey(item) === categoryKey(cleaned))) {
|
|
25
|
+
return `「${cleaned}」是保留名称,请换一个类别`;
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
export function resolveCategory(value, fallback = '其他') {
|
|
30
|
+
const cleaned = cleanCategory(value ?? '');
|
|
31
|
+
if (cleaned === '')
|
|
32
|
+
return fallback;
|
|
33
|
+
return canonicalBuiltinCategory(cleaned) ?? cleaned;
|
|
34
|
+
}
|
|
35
|
+
export function parseExampleLines(value) {
|
|
36
|
+
return value
|
|
37
|
+
.split(/\r?\n/)
|
|
38
|
+
.map(line => line.trim())
|
|
39
|
+
.filter(line => line !== '')
|
|
40
|
+
.slice(0, MAX_EXAMPLES);
|
|
41
|
+
}
|
|
42
|
+
export function canonicalizeCardCategories(cards) {
|
|
43
|
+
const builtinKeys = new Map(BUILTIN_CATEGORIES.map(category => [categoryKey(category), category]));
|
|
44
|
+
const labels = new Map();
|
|
45
|
+
for (const card of cards) {
|
|
46
|
+
const cleaned = cleanCategory(card.category) || '其他';
|
|
47
|
+
const key = categoryKey(cleaned);
|
|
48
|
+
if (!labels.has(key))
|
|
49
|
+
labels.set(key, builtinKeys.get(key) ?? cleaned);
|
|
50
|
+
}
|
|
51
|
+
return cards.map(card => {
|
|
52
|
+
const cleaned = cleanCategory(card.category) || '其他';
|
|
53
|
+
return {
|
|
54
|
+
...card,
|
|
55
|
+
category: labels.get(categoryKey(cleaned)) ?? cleaned,
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/shared/categories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CUSTOM_SECRET_PLACEHOLDER = "<\u5DF2\u4FDD\u5B58>";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customConfig.js","sourceRoot":"","sources":["../../src/shared/customConfig.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAA"}
|