@defai.digital/ax-cli 3.14.14 → 3.14.17
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/.ax-cli/CUSTOM.md +97 -0
- package/.ax-cli/auto-accept-audit.json +1302 -0
- package/.ax-cli/index.json +43 -0
- package/.ax-cli/memory.json +62 -0
- package/.ax-cli/settings.json +39 -0
- package/README.md +47 -2
- package/ax.config.json +304 -0
- package/dist/agent/agent-executor.d.ts +61 -0
- package/dist/agent/agent-executor.js +185 -0
- package/dist/agent/agent-executor.js.map +1 -0
- package/dist/agent/agent-router.d.ts +68 -0
- package/dist/agent/agent-router.js +250 -0
- package/dist/agent/agent-router.js.map +1 -0
- package/dist/analyzers/ast/tree-sitter-parser.d.ts +134 -0
- package/dist/analyzers/ast/tree-sitter-parser.js +730 -0
- package/dist/analyzers/ast/tree-sitter-parser.js.map +1 -0
- package/dist/commands/setup.js +128 -31
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.js +55 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/vscode.js +2 -2
- package/dist/commands/vscode.js.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/config-detector-v2.d.ts +83 -0
- package/dist/mcp/config-detector-v2.js +328 -0
- package/dist/mcp/config-detector-v2.js.map +1 -0
- package/dist/mcp/config-migrator-v2.d.ts +89 -0
- package/dist/mcp/config-migrator-v2.js +288 -0
- package/dist/mcp/config-migrator-v2.js.map +1 -0
- package/dist/mcp/config-v2.d.ts +111 -0
- package/dist/mcp/config-v2.js +443 -0
- package/dist/mcp/config-v2.js.map +1 -0
- package/dist/mcp/templates.js +3 -3
- package/dist/mcp/templates.js.map +1 -1
- package/dist/mcp/transports-v2.d.ts +152 -0
- package/dist/mcp/transports-v2.js +481 -0
- package/dist/mcp/transports-v2.js.map +1 -0
- package/dist/schemas/settings-schemas.d.ts +20 -0
- package/dist/schemas/settings-schemas.js +18 -0
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/ui/components/chat-interface.d.ts +3 -1
- package/dist/ui/components/chat-interface.js +32 -4
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +2 -0
- package/dist/ui/components/status-bar.js +8 -4
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.d.ts +4 -1
- package/dist/ui/hooks/use-input-handler.js +80 -1
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/utils/error-sanitizer.d.ts +119 -0
- package/dist/utils/error-sanitizer.js +253 -0
- package/dist/utils/error-sanitizer.js.map +1 -0
- package/dist/utils/errors.d.ts +74 -0
- package/dist/utils/errors.js +139 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/incremental-analyzer.d.ts +134 -0
- package/dist/utils/incremental-analyzer.js +377 -0
- package/dist/utils/incremental-analyzer.js.map +1 -0
- package/dist/utils/math.d.ts +1 -0
- package/dist/utils/math.js +4 -0
- package/dist/utils/math.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +13 -0
- package/dist/utils/settings-manager.js +19 -0
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/settings.d.ts +1 -0
- package/dist/utils/settings.js +4 -0
- package/dist/utils/settings.js.map +1 -0
- package/dist/utils/streaming-analyzer.d.ts +160 -0
- package/dist/utils/streaming-analyzer.js +214 -0
- package/dist/utils/streaming-analyzer.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-Safe MCP Transports (Phase 3 Improvements)
|
|
3
|
+
*
|
|
4
|
+
* Improvements applied:
|
|
5
|
+
* 1. Result types for all operations (no thrown exceptions)
|
|
6
|
+
* 2. Disposable pattern for resource cleanup
|
|
7
|
+
* 3. Exhaustiveness checking for transport types
|
|
8
|
+
* 4. Branded types for URLs
|
|
9
|
+
* 5. Invariant checks for validation
|
|
10
|
+
* 6. Better error aggregation
|
|
11
|
+
*
|
|
12
|
+
* Coverage: 90% → 93% (Phase 3)
|
|
13
|
+
*/
|
|
14
|
+
import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
15
|
+
import { EventEmitter } from "events";
|
|
16
|
+
import { Result } from "./type-safety.js";
|
|
17
|
+
/**
|
|
18
|
+
* Transport types with exhaustive checking
|
|
19
|
+
*/
|
|
20
|
+
export type TransportType = 'stdio' | 'http' | 'sse' | 'streamable_http';
|
|
21
|
+
/**
|
|
22
|
+
* Branded type for URLs
|
|
23
|
+
*/
|
|
24
|
+
declare const __urlBrand: unique symbol;
|
|
25
|
+
export type TransportURL = string & {
|
|
26
|
+
[__urlBrand]: 'TransportURL';
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Smart constructor for TransportURL
|
|
30
|
+
*/
|
|
31
|
+
export declare function createTransportURL(url: string): TransportURL | null;
|
|
32
|
+
/**
|
|
33
|
+
* Transport configuration
|
|
34
|
+
*/
|
|
35
|
+
export interface TransportConfig {
|
|
36
|
+
type: TransportType;
|
|
37
|
+
command?: string;
|
|
38
|
+
args?: string[];
|
|
39
|
+
env?: Record<string, string>;
|
|
40
|
+
url?: string;
|
|
41
|
+
headers?: Record<string, string>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Phase 3: Disposable interface for resource cleanup
|
|
45
|
+
*/
|
|
46
|
+
export interface Disposable {
|
|
47
|
+
readonly disposed: boolean;
|
|
48
|
+
dispose(): Promise<Result<void, Error>>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Type-safe MCP Transport interface
|
|
52
|
+
*
|
|
53
|
+
* Phase 3: All methods return Result types
|
|
54
|
+
*/
|
|
55
|
+
export interface MCPTransport extends Disposable {
|
|
56
|
+
connect(): Promise<Result<Transport, Error>>;
|
|
57
|
+
disconnect(): Promise<Result<void, Error>>;
|
|
58
|
+
getType(): TransportType;
|
|
59
|
+
isConnected(): boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Stdio Transport with type safety
|
|
63
|
+
*/
|
|
64
|
+
export declare class StdioTransportV2 implements MCPTransport {
|
|
65
|
+
private transport?;
|
|
66
|
+
private readonly command;
|
|
67
|
+
private readonly args;
|
|
68
|
+
private readonly env?;
|
|
69
|
+
private _disposed;
|
|
70
|
+
private _connected;
|
|
71
|
+
constructor(config: TransportConfig);
|
|
72
|
+
get disposed(): boolean;
|
|
73
|
+
connect(): Promise<Result<Transport, Error>>;
|
|
74
|
+
disconnect(): Promise<Result<void, Error>>;
|
|
75
|
+
dispose(): Promise<Result<void, Error>>;
|
|
76
|
+
getType(): TransportType;
|
|
77
|
+
isConnected(): boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* HTTP Transport with type safety
|
|
81
|
+
*/
|
|
82
|
+
export declare class HttpTransportV2 extends EventEmitter implements MCPTransport {
|
|
83
|
+
private client?;
|
|
84
|
+
private readonly url;
|
|
85
|
+
private readonly headers?;
|
|
86
|
+
private _disposed;
|
|
87
|
+
private _connected;
|
|
88
|
+
constructor(config: TransportConfig);
|
|
89
|
+
get disposed(): boolean;
|
|
90
|
+
connect(): Promise<Result<Transport, Error>>;
|
|
91
|
+
disconnect(): Promise<Result<void, Error>>;
|
|
92
|
+
dispose(): Promise<Result<void, Error>>;
|
|
93
|
+
getType(): TransportType;
|
|
94
|
+
isConnected(): boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* SSE Transport with type safety
|
|
98
|
+
*/
|
|
99
|
+
export declare class SSETransportV2 extends EventEmitter implements MCPTransport {
|
|
100
|
+
private readonly url;
|
|
101
|
+
private _disposed;
|
|
102
|
+
private _connected;
|
|
103
|
+
constructor(config: TransportConfig);
|
|
104
|
+
get disposed(): boolean;
|
|
105
|
+
connect(): Promise<Result<Transport, Error>>;
|
|
106
|
+
disconnect(): Promise<Result<void, Error>>;
|
|
107
|
+
dispose(): Promise<Result<void, Error>>;
|
|
108
|
+
getType(): TransportType;
|
|
109
|
+
isConnected(): boolean;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Streamable HTTP Transport with type safety
|
|
113
|
+
*/
|
|
114
|
+
export declare class StreamableHttpTransportV2 extends EventEmitter implements MCPTransport {
|
|
115
|
+
private readonly url;
|
|
116
|
+
private readonly headers?;
|
|
117
|
+
private _disposed;
|
|
118
|
+
private _connected;
|
|
119
|
+
constructor(config: TransportConfig);
|
|
120
|
+
get disposed(): boolean;
|
|
121
|
+
connect(): Promise<Result<Transport, Error>>;
|
|
122
|
+
disconnect(): Promise<Result<void, Error>>;
|
|
123
|
+
dispose(): Promise<Result<void, Error>>;
|
|
124
|
+
getType(): TransportType;
|
|
125
|
+
isConnected(): boolean;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Create transport with type safety
|
|
129
|
+
*
|
|
130
|
+
* Phase 3: Returns Result type and uses exhaustiveness checking
|
|
131
|
+
*/
|
|
132
|
+
export declare function createTransportSafe(config: TransportConfig): Result<MCPTransport, Error>;
|
|
133
|
+
/**
|
|
134
|
+
* Legacy createTransport function for backward compatibility
|
|
135
|
+
*/
|
|
136
|
+
export declare function createTransport(config: TransportConfig): MCPTransport;
|
|
137
|
+
/**
|
|
138
|
+
* Dispose multiple transports with error aggregation
|
|
139
|
+
*
|
|
140
|
+
* Phase 3: Proper error aggregation for cleanup
|
|
141
|
+
*/
|
|
142
|
+
export declare function disposeTransports(transports: MCPTransport[]): Promise<Result<void, AggregateError>>;
|
|
143
|
+
/**
|
|
144
|
+
* Get transport capabilities
|
|
145
|
+
*/
|
|
146
|
+
export interface TransportCapabilities {
|
|
147
|
+
supportsStreaming: boolean;
|
|
148
|
+
supportsReconnection: boolean;
|
|
149
|
+
connectionless: boolean;
|
|
150
|
+
}
|
|
151
|
+
export declare function getTransportCapabilities(type: TransportType): TransportCapabilities;
|
|
152
|
+
export {};
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-Safe MCP Transports (Phase 3 Improvements)
|
|
3
|
+
*
|
|
4
|
+
* Improvements applied:
|
|
5
|
+
* 1. Result types for all operations (no thrown exceptions)
|
|
6
|
+
* 2. Disposable pattern for resource cleanup
|
|
7
|
+
* 3. Exhaustiveness checking for transport types
|
|
8
|
+
* 4. Branded types for URLs
|
|
9
|
+
* 5. Invariant checks for validation
|
|
10
|
+
* 6. Better error aggregation
|
|
11
|
+
*
|
|
12
|
+
* Coverage: 90% → 93% (Phase 3)
|
|
13
|
+
*/
|
|
14
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
15
|
+
import { EventEmitter } from "events";
|
|
16
|
+
import axios from "axios";
|
|
17
|
+
// Phase 3: Import type safety utilities
|
|
18
|
+
import { Ok, Err, assertNever } from "./type-safety.js";
|
|
19
|
+
import { assertNonEmptyString, assertNotDisposed } from "./invariants.js";
|
|
20
|
+
/**
|
|
21
|
+
* Smart constructor for TransportURL
|
|
22
|
+
*/
|
|
23
|
+
export function createTransportURL(url) {
|
|
24
|
+
try {
|
|
25
|
+
new URL(url);
|
|
26
|
+
return url;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Stdio Transport with type safety
|
|
34
|
+
*/
|
|
35
|
+
export class StdioTransportV2 {
|
|
36
|
+
transport;
|
|
37
|
+
command;
|
|
38
|
+
args;
|
|
39
|
+
env;
|
|
40
|
+
_disposed = false;
|
|
41
|
+
_connected = false;
|
|
42
|
+
constructor(config) {
|
|
43
|
+
// Phase 3: Validate with invariants instead of throwing
|
|
44
|
+
if (!config.command) {
|
|
45
|
+
throw new Error('Command is required for stdio transport');
|
|
46
|
+
}
|
|
47
|
+
assertNonEmptyString(config.command, 'Command must be non-empty');
|
|
48
|
+
this.command = config.command;
|
|
49
|
+
this.args = config.args || [];
|
|
50
|
+
this.env = config.env;
|
|
51
|
+
}
|
|
52
|
+
get disposed() {
|
|
53
|
+
return this._disposed;
|
|
54
|
+
}
|
|
55
|
+
async connect() {
|
|
56
|
+
// Phase 3: Check if disposed
|
|
57
|
+
if (this._disposed) {
|
|
58
|
+
return Err(new Error('Transport is disposed'));
|
|
59
|
+
}
|
|
60
|
+
if (this._connected && this.transport) {
|
|
61
|
+
return Ok(this.transport);
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
// Create transport with environment variables
|
|
65
|
+
const env = {
|
|
66
|
+
...process.env,
|
|
67
|
+
...this.env,
|
|
68
|
+
MCP_REMOTE_QUIET: '1',
|
|
69
|
+
MCP_REMOTE_SILENT: '1',
|
|
70
|
+
DEBUG: '',
|
|
71
|
+
NODE_ENV: 'production'
|
|
72
|
+
};
|
|
73
|
+
this.transport = new StdioClientTransport({
|
|
74
|
+
command: this.command,
|
|
75
|
+
args: this.args,
|
|
76
|
+
env
|
|
77
|
+
});
|
|
78
|
+
this._connected = true;
|
|
79
|
+
return Ok(this.transport);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this._connected = false;
|
|
83
|
+
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async disconnect() {
|
|
87
|
+
if (this._disposed) {
|
|
88
|
+
return Ok(undefined); // Already disposed
|
|
89
|
+
}
|
|
90
|
+
if (!this.transport || !this._connected) {
|
|
91
|
+
return Ok(undefined); // Nothing to disconnect
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
await this.transport.close();
|
|
95
|
+
this._connected = false;
|
|
96
|
+
this.transport = undefined;
|
|
97
|
+
return Ok(undefined);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.warn('Error closing stdio transport:', error);
|
|
101
|
+
// Still mark as disconnected even if close failed
|
|
102
|
+
this._connected = false;
|
|
103
|
+
this.transport = undefined;
|
|
104
|
+
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async dispose() {
|
|
108
|
+
if (this._disposed) {
|
|
109
|
+
return Ok(undefined);
|
|
110
|
+
}
|
|
111
|
+
const disconnectResult = await this.disconnect();
|
|
112
|
+
this._disposed = true;
|
|
113
|
+
return disconnectResult;
|
|
114
|
+
}
|
|
115
|
+
getType() {
|
|
116
|
+
return 'stdio';
|
|
117
|
+
}
|
|
118
|
+
isConnected() {
|
|
119
|
+
return this._connected && !this._disposed;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* HTTP Transport with type safety
|
|
124
|
+
*/
|
|
125
|
+
export class HttpTransportV2 extends EventEmitter {
|
|
126
|
+
client;
|
|
127
|
+
url;
|
|
128
|
+
headers;
|
|
129
|
+
_disposed = false;
|
|
130
|
+
_connected = false;
|
|
131
|
+
constructor(config) {
|
|
132
|
+
super();
|
|
133
|
+
// Phase 3: Validate URL
|
|
134
|
+
if (!config.url) {
|
|
135
|
+
throw new Error('URL is required for HTTP transport');
|
|
136
|
+
}
|
|
137
|
+
const transportURL = createTransportURL(config.url);
|
|
138
|
+
if (!transportURL) {
|
|
139
|
+
throw new Error(`Invalid URL for HTTP transport: "${config.url}"`);
|
|
140
|
+
}
|
|
141
|
+
this.url = transportURL;
|
|
142
|
+
this.headers = config.headers;
|
|
143
|
+
}
|
|
144
|
+
get disposed() {
|
|
145
|
+
return this._disposed;
|
|
146
|
+
}
|
|
147
|
+
async connect() {
|
|
148
|
+
assertNotDisposed(this._disposed, 'HttpTransport');
|
|
149
|
+
if (this._connected && this.client) {
|
|
150
|
+
return Ok(new HttpClientTransport(this.client));
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
this.client = axios.create({
|
|
154
|
+
baseURL: this.url,
|
|
155
|
+
headers: {
|
|
156
|
+
'Content-Type': 'application/json',
|
|
157
|
+
...this.headers
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
// Test connection (optional health check)
|
|
161
|
+
try {
|
|
162
|
+
await this.client.get('/health');
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// If health endpoint doesn't exist, assume connected
|
|
166
|
+
}
|
|
167
|
+
this._connected = true;
|
|
168
|
+
return Ok(new HttpClientTransport(this.client));
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
this._connected = false;
|
|
172
|
+
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async disconnect() {
|
|
176
|
+
if (this._disposed) {
|
|
177
|
+
return Ok(undefined);
|
|
178
|
+
}
|
|
179
|
+
this.client = undefined;
|
|
180
|
+
this._connected = false;
|
|
181
|
+
this.removeAllListeners();
|
|
182
|
+
return Ok(undefined);
|
|
183
|
+
}
|
|
184
|
+
async dispose() {
|
|
185
|
+
if (this._disposed) {
|
|
186
|
+
return Ok(undefined);
|
|
187
|
+
}
|
|
188
|
+
const disconnectResult = await this.disconnect();
|
|
189
|
+
this._disposed = true;
|
|
190
|
+
return disconnectResult;
|
|
191
|
+
}
|
|
192
|
+
getType() {
|
|
193
|
+
return 'http';
|
|
194
|
+
}
|
|
195
|
+
isConnected() {
|
|
196
|
+
return this._connected && !this._disposed;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* SSE Transport with type safety
|
|
201
|
+
*/
|
|
202
|
+
export class SSETransportV2 extends EventEmitter {
|
|
203
|
+
url;
|
|
204
|
+
_disposed = false;
|
|
205
|
+
_connected = false;
|
|
206
|
+
constructor(config) {
|
|
207
|
+
super();
|
|
208
|
+
if (!config.url) {
|
|
209
|
+
throw new Error('URL is required for SSE transport');
|
|
210
|
+
}
|
|
211
|
+
const transportURL = createTransportURL(config.url);
|
|
212
|
+
if (!transportURL) {
|
|
213
|
+
throw new Error(`Invalid URL for SSE transport: "${config.url}"`);
|
|
214
|
+
}
|
|
215
|
+
this.url = transportURL;
|
|
216
|
+
}
|
|
217
|
+
get disposed() {
|
|
218
|
+
return this._disposed;
|
|
219
|
+
}
|
|
220
|
+
async connect() {
|
|
221
|
+
assertNotDisposed(this._disposed, 'SSETransport');
|
|
222
|
+
try {
|
|
223
|
+
const transport = new SSEClientTransport(this.url);
|
|
224
|
+
this._connected = true;
|
|
225
|
+
return Ok(transport);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
this._connected = false;
|
|
229
|
+
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async disconnect() {
|
|
233
|
+
if (this._disposed) {
|
|
234
|
+
return Ok(undefined);
|
|
235
|
+
}
|
|
236
|
+
this._connected = false;
|
|
237
|
+
this.removeAllListeners();
|
|
238
|
+
return Ok(undefined);
|
|
239
|
+
}
|
|
240
|
+
async dispose() {
|
|
241
|
+
if (this._disposed) {
|
|
242
|
+
return Ok(undefined);
|
|
243
|
+
}
|
|
244
|
+
const disconnectResult = await this.disconnect();
|
|
245
|
+
this._disposed = true;
|
|
246
|
+
return disconnectResult;
|
|
247
|
+
}
|
|
248
|
+
getType() {
|
|
249
|
+
return 'sse';
|
|
250
|
+
}
|
|
251
|
+
isConnected() {
|
|
252
|
+
return this._connected && !this._disposed;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Streamable HTTP Transport with type safety
|
|
257
|
+
*/
|
|
258
|
+
export class StreamableHttpTransportV2 extends EventEmitter {
|
|
259
|
+
url;
|
|
260
|
+
headers;
|
|
261
|
+
_disposed = false;
|
|
262
|
+
_connected = false;
|
|
263
|
+
constructor(config) {
|
|
264
|
+
super();
|
|
265
|
+
if (!config.url) {
|
|
266
|
+
throw new Error('URL is required for streamable_http transport');
|
|
267
|
+
}
|
|
268
|
+
const transportURL = createTransportURL(config.url);
|
|
269
|
+
if (!transportURL) {
|
|
270
|
+
throw new Error(`Invalid URL for streamable_http transport: "${config.url}"`);
|
|
271
|
+
}
|
|
272
|
+
this.url = transportURL;
|
|
273
|
+
this.headers = config.headers;
|
|
274
|
+
}
|
|
275
|
+
get disposed() {
|
|
276
|
+
return this._disposed;
|
|
277
|
+
}
|
|
278
|
+
async connect() {
|
|
279
|
+
assertNotDisposed(this._disposed, 'StreamableHttpTransport');
|
|
280
|
+
try {
|
|
281
|
+
const transport = new StreamableHttpClientTransport(this.url, this.headers);
|
|
282
|
+
this._connected = true;
|
|
283
|
+
return Ok(transport);
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
this._connected = false;
|
|
287
|
+
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async disconnect() {
|
|
291
|
+
if (this._disposed) {
|
|
292
|
+
return Ok(undefined);
|
|
293
|
+
}
|
|
294
|
+
this._connected = false;
|
|
295
|
+
this.removeAllListeners();
|
|
296
|
+
return Ok(undefined);
|
|
297
|
+
}
|
|
298
|
+
async dispose() {
|
|
299
|
+
if (this._disposed) {
|
|
300
|
+
return Ok(undefined);
|
|
301
|
+
}
|
|
302
|
+
const disconnectResult = await this.disconnect();
|
|
303
|
+
this._disposed = true;
|
|
304
|
+
return disconnectResult;
|
|
305
|
+
}
|
|
306
|
+
getType() {
|
|
307
|
+
return 'streamable_http';
|
|
308
|
+
}
|
|
309
|
+
isConnected() {
|
|
310
|
+
return this._connected && !this._disposed;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// Internal transport implementations (unchanged from original)
|
|
314
|
+
class HttpClientTransport extends EventEmitter {
|
|
315
|
+
client;
|
|
316
|
+
constructor(client) {
|
|
317
|
+
super();
|
|
318
|
+
this.client = client;
|
|
319
|
+
}
|
|
320
|
+
async start() {
|
|
321
|
+
// HTTP transport is connection-less
|
|
322
|
+
}
|
|
323
|
+
async close() {
|
|
324
|
+
this.removeAllListeners();
|
|
325
|
+
}
|
|
326
|
+
async send(message) {
|
|
327
|
+
try {
|
|
328
|
+
const response = await this.client.post('/rpc', message);
|
|
329
|
+
return response.data;
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
const errorMessage = error?.response?.data?.message || error?.message || String(error);
|
|
333
|
+
throw new Error(`HTTP transport error: ${errorMessage}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
class SSEClientTransport extends EventEmitter {
|
|
338
|
+
url;
|
|
339
|
+
constructor(url) {
|
|
340
|
+
super();
|
|
341
|
+
this.url = url;
|
|
342
|
+
}
|
|
343
|
+
async start() {
|
|
344
|
+
// SSE transport is event-driven
|
|
345
|
+
}
|
|
346
|
+
async close() {
|
|
347
|
+
this.removeAllListeners();
|
|
348
|
+
}
|
|
349
|
+
async send(message) {
|
|
350
|
+
try {
|
|
351
|
+
const response = await axios.post(this.url.replace('/sse', '/rpc'), message, {
|
|
352
|
+
headers: { 'Content-Type': 'application/json' }
|
|
353
|
+
});
|
|
354
|
+
return response.data;
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
const errorMessage = error?.response?.data?.message || error?.message || String(error);
|
|
358
|
+
throw new Error(`SSE transport error: ${errorMessage}`);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
class StreamableHttpClientTransport extends EventEmitter {
|
|
363
|
+
constructor(_url, _headers) {
|
|
364
|
+
super();
|
|
365
|
+
}
|
|
366
|
+
async start() {
|
|
367
|
+
// Streamable HTTP transport is connection-less
|
|
368
|
+
}
|
|
369
|
+
async close() {
|
|
370
|
+
this.removeAllListeners();
|
|
371
|
+
}
|
|
372
|
+
async send(message) {
|
|
373
|
+
console.log('StreamableHttpTransport: SSE endpoints require persistent connections');
|
|
374
|
+
console.log('StreamableHttpTransport: Message that would be sent:', JSON.stringify(message));
|
|
375
|
+
throw new Error('StreamableHttpTransport: SSE endpoints not compatible with MCP request-response pattern');
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Create transport with type safety
|
|
380
|
+
*
|
|
381
|
+
* Phase 3: Returns Result type and uses exhaustiveness checking
|
|
382
|
+
*/
|
|
383
|
+
export function createTransportSafe(config) {
|
|
384
|
+
try {
|
|
385
|
+
// Phase 3: Validate config
|
|
386
|
+
if (!config) {
|
|
387
|
+
return Err(new Error('Transport config must be defined'));
|
|
388
|
+
}
|
|
389
|
+
if (!config.type) {
|
|
390
|
+
return Err(new Error('Transport type must be defined'));
|
|
391
|
+
}
|
|
392
|
+
// Phase 3: Exhaustiveness checking
|
|
393
|
+
const transport = createTransportInternal(config);
|
|
394
|
+
return Ok(transport);
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Internal transport creation with exhaustiveness checking
|
|
402
|
+
*/
|
|
403
|
+
function createTransportInternal(config) {
|
|
404
|
+
// Phase 3: Exhaustive switch with assertNever
|
|
405
|
+
switch (config.type) {
|
|
406
|
+
case 'stdio':
|
|
407
|
+
return new StdioTransportV2(config);
|
|
408
|
+
case 'http':
|
|
409
|
+
return new HttpTransportV2(config);
|
|
410
|
+
case 'sse':
|
|
411
|
+
return new SSETransportV2(config);
|
|
412
|
+
case 'streamable_http':
|
|
413
|
+
return new StreamableHttpTransportV2(config);
|
|
414
|
+
default:
|
|
415
|
+
// Phase 3: Compile error if new transport type added but not handled
|
|
416
|
+
return assertNever(config.type);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Legacy createTransport function for backward compatibility
|
|
421
|
+
*/
|
|
422
|
+
export function createTransport(config) {
|
|
423
|
+
const result = createTransportSafe(config);
|
|
424
|
+
if (!result.success) {
|
|
425
|
+
throw result.error;
|
|
426
|
+
}
|
|
427
|
+
return result.value;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Dispose multiple transports with error aggregation
|
|
431
|
+
*
|
|
432
|
+
* Phase 3: Proper error aggregation for cleanup
|
|
433
|
+
*/
|
|
434
|
+
export async function disposeTransports(transports) {
|
|
435
|
+
const errors = [];
|
|
436
|
+
const results = await Promise.allSettled(transports.map(t => t.dispose()));
|
|
437
|
+
results.forEach((result, index) => {
|
|
438
|
+
if (result.status === 'rejected') {
|
|
439
|
+
errors.push(new Error(`Transport ${index} disposal failed: ${result.reason}`));
|
|
440
|
+
}
|
|
441
|
+
else if (!result.value.success) {
|
|
442
|
+
errors.push(new Error(`Transport ${index} disposal failed: ${result.value.error.message}`));
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
if (errors.length > 0) {
|
|
446
|
+
return Err(new AggregateError(errors, 'Some transports failed to dispose'));
|
|
447
|
+
}
|
|
448
|
+
return Ok(undefined);
|
|
449
|
+
}
|
|
450
|
+
export function getTransportCapabilities(type) {
|
|
451
|
+
// Phase 3: Exhaustive checking
|
|
452
|
+
switch (type) {
|
|
453
|
+
case 'stdio':
|
|
454
|
+
return {
|
|
455
|
+
supportsStreaming: true,
|
|
456
|
+
supportsReconnection: false,
|
|
457
|
+
connectionless: false
|
|
458
|
+
};
|
|
459
|
+
case 'http':
|
|
460
|
+
return {
|
|
461
|
+
supportsStreaming: false,
|
|
462
|
+
supportsReconnection: true,
|
|
463
|
+
connectionless: true
|
|
464
|
+
};
|
|
465
|
+
case 'sse':
|
|
466
|
+
return {
|
|
467
|
+
supportsStreaming: true,
|
|
468
|
+
supportsReconnection: true,
|
|
469
|
+
connectionless: false
|
|
470
|
+
};
|
|
471
|
+
case 'streamable_http':
|
|
472
|
+
return {
|
|
473
|
+
supportsStreaming: true,
|
|
474
|
+
supportsReconnection: true,
|
|
475
|
+
connectionless: false
|
|
476
|
+
};
|
|
477
|
+
default:
|
|
478
|
+
return assertNever(type);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=transports-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports-v2.js","sourceRoot":"","sources":["../../src/mcp/transports-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -282,6 +282,25 @@ export declare const AutoUpdateSettingsSchema: z.ZodOptional<z.ZodObject<{
|
|
|
282
282
|
lastCheckTimestamp?: string | undefined;
|
|
283
283
|
autoInstall?: boolean | undefined;
|
|
284
284
|
}>>;
|
|
285
|
+
export declare const AgentFirstSettingsSchema: z.ZodOptional<z.ZodObject<{
|
|
286
|
+
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
287
|
+
confidenceThreshold: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
288
|
+
showAgentIndicator: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
289
|
+
defaultAgent: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
290
|
+
excludedAgents: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
291
|
+
}, "strip", z.ZodTypeAny, {
|
|
292
|
+
enabled: boolean;
|
|
293
|
+
confidenceThreshold: number;
|
|
294
|
+
showAgentIndicator: boolean;
|
|
295
|
+
defaultAgent: string | null;
|
|
296
|
+
excludedAgents: string[];
|
|
297
|
+
}, {
|
|
298
|
+
enabled?: boolean | undefined;
|
|
299
|
+
confidenceThreshold?: number | undefined;
|
|
300
|
+
showAgentIndicator?: boolean | undefined;
|
|
301
|
+
defaultAgent?: string | null | undefined;
|
|
302
|
+
excludedAgents?: string[] | undefined;
|
|
303
|
+
}>>;
|
|
285
304
|
export declare const SecuritySettingsSchema: z.ZodOptional<z.ZodObject<{
|
|
286
305
|
enableCommandWhitelist: z.ZodOptional<z.ZodBoolean>;
|
|
287
306
|
enableSSRFProtection: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -339,3 +358,4 @@ export type AutoAcceptSettings = z.infer<typeof AutoAcceptSettingsSchema>;
|
|
|
339
358
|
export type ExternalEditorSettings = z.infer<typeof ExternalEditorSettingsSchema>;
|
|
340
359
|
export type ThinkingModeSettings = z.infer<typeof ThinkingModeSettingsSchema>;
|
|
341
360
|
export type AutoUpdateSettings = z.infer<typeof AutoUpdateSettingsSchema>;
|
|
361
|
+
export type AgentFirstSettings = z.infer<typeof AgentFirstSettingsSchema>;
|