sqlew 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/backend/backend-factory.js +1 -1
- package/dist/backend/backend-factory.js.map +1 -1
- package/dist/saas-connector/auth/auth-manager.d.ts.map +1 -0
- package/dist/saas-connector/auth/auth-manager.js +13 -0
- package/dist/saas-connector/auth/auth-manager.js.map +1 -0
- package/{saas-connector/dist → dist/saas-connector}/backend/saas-backend.d.ts +1 -1
- package/dist/saas-connector/backend/saas-backend.d.ts.map +1 -0
- package/dist/saas-connector/backend/saas-backend.js +71 -0
- package/dist/saas-connector/backend/saas-backend.js.map +1 -0
- package/{saas-connector/dist → dist/saas-connector}/client/http-client.d.ts +2 -2
- package/dist/saas-connector/client/http-client.d.ts.map +1 -0
- package/dist/saas-connector/client/http-client.js +196 -0
- package/dist/saas-connector/client/http-client.js.map +1 -0
- package/dist/saas-connector/client/types.d.ts.map +1 -0
- package/dist/saas-connector/client/types.js +2 -0
- package/dist/saas-connector/client/types.js.map +1 -0
- package/dist/saas-connector/config/constants.d.ts.map +1 -0
- package/dist/saas-connector/config/constants.js +37 -0
- package/dist/saas-connector/config/constants.js.map +1 -0
- package/dist/saas-connector/errors/api-error.d.ts.map +1 -0
- package/dist/saas-connector/errors/api-error.js +38 -0
- package/dist/saas-connector/errors/api-error.js.map +1 -0
- package/{saas-connector/dist → dist/saas-connector}/index.d.ts +4 -4
- package/dist/saas-connector/index.d.ts.map +1 -0
- package/dist/saas-connector/index.js +20 -0
- package/dist/saas-connector/index.js.map +1 -0
- package/package.json +1 -4
- package/saas-connector/LICENSE +0 -190
- package/saas-connector/README.md +0 -122
- package/saas-connector/dist/auth/auth-manager.d.ts.map +0 -1
- package/saas-connector/dist/auth/auth-manager.js +0 -39
- package/saas-connector/dist/auth/auth-manager.js.map +0 -7
- package/saas-connector/dist/backend/saas-backend.d.ts.map +0 -1
- package/saas-connector/dist/backend/saas-backend.js +0 -104
- package/saas-connector/dist/backend/saas-backend.js.map +0 -7
- package/saas-connector/dist/client/http-client.d.ts.map +0 -1
- package/saas-connector/dist/client/http-client.js +0 -226
- package/saas-connector/dist/client/http-client.js.map +0 -7
- package/saas-connector/dist/client/types.d.ts.map +0 -1
- package/saas-connector/dist/client/types.js +0 -17
- package/saas-connector/dist/client/types.js.map +0 -7
- package/saas-connector/dist/config/constants.d.ts.map +0 -1
- package/saas-connector/dist/config/constants.js +0 -68
- package/saas-connector/dist/config/constants.js.map +0 -7
- package/saas-connector/dist/errors/api-error.d.ts.map +0 -1
- package/saas-connector/dist/errors/api-error.js +0 -62
- package/saas-connector/dist/errors/api-error.js.map +0 -7
- package/saas-connector/dist/index.d.ts.map +0 -1
- package/saas-connector/dist/index.js +0 -51
- package/saas-connector/dist/index.js.map +0 -7
- package/saas-connector/package-lock.json +0 -518
- package/saas-connector/package.json +0 -34
- /package/{saas-connector/dist → dist/saas-connector}/auth/auth-manager.d.ts +0 -0
- /package/{saas-connector/dist → dist/saas-connector}/client/types.d.ts +0 -0
- /package/{saas-connector/dist → dist/saas-connector}/config/constants.d.ts +0 -0
- /package/{saas-connector/dist → dist/saas-connector}/errors/api-error.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [5.0.1] - 2026-02-02
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
**🔒 Security: saas-connector submodule integration (Issue #84)**
|
|
15
|
+
|
|
16
|
+
- Integrated saas-connector submodule directly into `src/saas-connector/`
|
|
17
|
+
- Removed `prebuild` script that triggered npm package scanner alerts
|
|
18
|
+
- Converted saas-connector from CommonJS to ESM for unified tsc build
|
|
19
|
+
- Eliminated separate esbuild step and `npm install` in subdirectory
|
|
20
|
+
- No functional changes - same SaaS backend behavior
|
|
21
|
+
|
|
22
|
+
**Rationale**: The `prebuild` script (`cd saas-connector && npm install && npm run build`) was flagged by npm security scanners as a potential risk. While the code itself was safe, the submodule architecture created unnecessary complexity and security perception issues.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
10
26
|
## [5.0.0] - 2026-01-31
|
|
11
27
|
|
|
12
28
|
### Added
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { CLOUD_ENV_VARS } from '../config/types.js';
|
|
8
8
|
import { LocalBackend } from './local-backend.js';
|
|
9
9
|
import { TransformingBackend } from './transforming-backend.js';
|
|
10
|
-
import { createBackend as createSaaSBackend, resolveProject, } from '
|
|
10
|
+
import { createBackend as createSaaSBackend, resolveProject, } from '../saas-connector/index.js';
|
|
11
11
|
import { debugLog } from '../utils/debug-logger.js';
|
|
12
12
|
import { loadCloudConfigFromGlobal, checkEnvFilePermissions, loadCachedProjectId, saveCachedProjectId, } from '../config/cloud-config-loader.js';
|
|
13
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-factory.js","sourceRoot":"","sources":["../../src/backend/backend-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,aAAa,IAAI,iBAAiB,EAClC,cAAc,GACf,MAAM,
|
|
1
|
+
{"version":3,"file":"backend-factory.js","sourceRoot":"","sources":["../../src/backend/backend-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../../../src/saas-connector/auth/auth-manager.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAMlC,sBAAsB,IAAI,MAAM;CAGjC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class AuthManager {
|
|
2
|
+
apiKey;
|
|
3
|
+
constructor(apiKey) {
|
|
4
|
+
this.apiKey = apiKey;
|
|
5
|
+
if (!apiKey || apiKey.trim() === '') {
|
|
6
|
+
throw new Error('API key is required');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
getAuthorizationHeader() {
|
|
10
|
+
return `Bearer ${this.apiKey}`;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=auth-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-manager.js","sourceRoot":"","sources":["../../../src/saas-connector/auth/auth-manager.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,sBAAsB;QACpB,OAAO,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CloudConfig, ToolBackend, HealthCheckResult } from '../client/types';
|
|
1
|
+
import type { CloudConfig, ToolBackend, HealthCheckResult } from '../client/types.js';
|
|
2
2
|
export declare class SaaSBackend implements ToolBackend {
|
|
3
3
|
readonly backendType: "saas";
|
|
4
4
|
readonly pluginName = "saas-connector";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saas-backend.d.ts","sourceRoot":"","sources":["../../../src/saas-connector/backend/saas-backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,WAAY,YAAW,WAAW;IAC7C,QAAQ,CAAC,WAAW,EAAG,MAAM,CAAU;IACvC,QAAQ,CAAC,UAAU,oBAAoB;IAEvC,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,EAAE,WAAW;IAUzB,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,CAAC,CAAC;IA2Bb;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkBjB,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiBzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGjC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { HttpClient } from '../client/http-client.js';
|
|
2
|
+
import { AuthManager } from '../auth/auth-manager.js';
|
|
3
|
+
import { ApiError } from '../errors/api-error.js';
|
|
4
|
+
import { SUPPORTED_TOOLS, isLocalOnlyAction } from '../config/constants.js';
|
|
5
|
+
export class SaaSBackend {
|
|
6
|
+
backendType = 'saas';
|
|
7
|
+
pluginName = 'saas-connector';
|
|
8
|
+
httpClient;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
const authManager = new AuthManager(config.apiKey);
|
|
11
|
+
this.httpClient = new HttpClient(authManager, config.projectName, config.projectId, config.connectionIdentity);
|
|
12
|
+
}
|
|
13
|
+
async execute(tool, action, params) {
|
|
14
|
+
// Check if this action should be handled locally (no DB access required)
|
|
15
|
+
if (isLocalOnlyAction(tool, action)) {
|
|
16
|
+
throw new ApiError('LOCAL_ONLY_ACTION', `Action '${tool}.${action}' should be handled locally (no DB access required)`, 200 // Not an error, just a signal to fallback
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
// Validate supported tools
|
|
20
|
+
if (!SUPPORTED_TOOLS.includes(tool)) {
|
|
21
|
+
throw new ApiError('UNSUPPORTED_TOOL', `Tool '${tool}' is not supported in SaaS mode. Supported tools: ${SUPPORTED_TOOLS.join(', ')}`, 400);
|
|
22
|
+
}
|
|
23
|
+
// Normalize params for SaaS API compatibility
|
|
24
|
+
const normalizedParams = this.normalizeParams(tool, action, params);
|
|
25
|
+
// Call SaaS API
|
|
26
|
+
const endpoint = `/api/v1/${tool}/${action}`;
|
|
27
|
+
return await this.httpClient.post(endpoint, normalizedParams);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Normalize params for SaaS API compatibility
|
|
31
|
+
* Maps client param names to SaaS API expected names
|
|
32
|
+
*/
|
|
33
|
+
normalizeParams(tool, action, params) {
|
|
34
|
+
const result = { ...params };
|
|
35
|
+
// constraint.deactivate/activate: constraint_id → id
|
|
36
|
+
if (tool === 'constraint' && (action === 'deactivate' || action === 'activate')) {
|
|
37
|
+
if ('constraint_id' in result && !('id' in result)) {
|
|
38
|
+
result.id = result.constraint_id;
|
|
39
|
+
delete result.constraint_id;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
async healthCheck() {
|
|
45
|
+
const start = Date.now();
|
|
46
|
+
try {
|
|
47
|
+
await this.httpClient.get('/health');
|
|
48
|
+
return {
|
|
49
|
+
ok: true,
|
|
50
|
+
latency: Date.now() - start,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return {
|
|
55
|
+
ok: false,
|
|
56
|
+
latency: Date.now() - start,
|
|
57
|
+
message: error instanceof Error ? error.message : String(error),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async disconnect() {
|
|
62
|
+
// HTTP client doesn't need explicit disconnect
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Set agent name for X-Agent header (called after MCP handshake)
|
|
66
|
+
*/
|
|
67
|
+
setAgentName(name) {
|
|
68
|
+
this.httpClient.setAgentName(name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=saas-backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saas-backend.js","sourceRoot":"","sources":["../../../src/saas-connector/backend/saas-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AuthManager } from '../auth/auth-manager';
|
|
2
|
-
import type { ConnectionIdentity } from './types';
|
|
1
|
+
import { AuthManager } from '../auth/auth-manager.js';
|
|
2
|
+
import type { ConnectionIdentity } from './types.js';
|
|
3
3
|
export declare class HttpClient {
|
|
4
4
|
private authManager;
|
|
5
5
|
private projectName?;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/saas-connector/client/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAStD,OAAO,KAAK,EAAe,kBAAkB,EAA0B,MAAM,YAAY,CAAC;AAE1F,qBAAa,UAAU;IAInB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,kBAAkB,CAAC;IAN7B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAGjB,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,YAAA;IAGjD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1B,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuChE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAwBxB,gBAAgB;YAuChB,cAAc;IA4C5B,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,KAAK;CAGd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { ApiError } from '../errors/api-error.js';
|
|
2
|
+
import { API_ENDPOINT, MAX_RETRIES, INITIAL_RETRY_DELAY, MAX_RETRY_DELAY, REQUEST_TIMEOUT, } from '../config/constants.js';
|
|
3
|
+
export class HttpClient {
|
|
4
|
+
authManager;
|
|
5
|
+
projectName;
|
|
6
|
+
projectId;
|
|
7
|
+
connectionIdentity;
|
|
8
|
+
agentName;
|
|
9
|
+
constructor(authManager, projectName, projectId, connectionIdentity) {
|
|
10
|
+
this.authManager = authManager;
|
|
11
|
+
this.projectName = projectName;
|
|
12
|
+
this.projectId = projectId;
|
|
13
|
+
this.connectionIdentity = connectionIdentity;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Set agent name for X-Agent header (called after MCP handshake)
|
|
17
|
+
*/
|
|
18
|
+
setAgentName(name) {
|
|
19
|
+
this.agentName = name;
|
|
20
|
+
}
|
|
21
|
+
async post(path, body) {
|
|
22
|
+
const url = `${API_ENDPOINT}${path}`;
|
|
23
|
+
const requestBody = {
|
|
24
|
+
project_id: this.projectId,
|
|
25
|
+
project_name: this.projectName,
|
|
26
|
+
// Connection identification for seat-based billing (v5.0.0+)
|
|
27
|
+
...(this.connectionIdentity && {
|
|
28
|
+
connection_hash: this.connectionIdentity.connectionHash,
|
|
29
|
+
connection_display: {
|
|
30
|
+
environment: this.connectionIdentity.environment,
|
|
31
|
+
path_suffix: this.connectionIdentity.pathSuffix,
|
|
32
|
+
},
|
|
33
|
+
}),
|
|
34
|
+
...body,
|
|
35
|
+
};
|
|
36
|
+
return await this.executeWithRetry(async () => {
|
|
37
|
+
const controller = new AbortController();
|
|
38
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
39
|
+
try {
|
|
40
|
+
const response = await fetch(url, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
headers: {
|
|
43
|
+
Authorization: this.authManager.getAuthorizationHeader(),
|
|
44
|
+
'Content-Type': 'application/json',
|
|
45
|
+
...(this.agentName && { 'X-Agent': this.agentName }),
|
|
46
|
+
},
|
|
47
|
+
body: JSON.stringify(requestBody),
|
|
48
|
+
signal: controller.signal,
|
|
49
|
+
});
|
|
50
|
+
return await this.handleResponse(response);
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
clearTimeout(timeoutId);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async get(path) {
|
|
58
|
+
const url = `${API_ENDPOINT}${path}`;
|
|
59
|
+
return await this.executeWithRetry(async () => {
|
|
60
|
+
const controller = new AbortController();
|
|
61
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
62
|
+
try {
|
|
63
|
+
const response = await fetch(url, {
|
|
64
|
+
method: 'GET',
|
|
65
|
+
headers: {
|
|
66
|
+
Authorization: this.authManager.getAuthorizationHeader(),
|
|
67
|
+
...(this.agentName && { 'X-Agent': this.agentName }),
|
|
68
|
+
},
|
|
69
|
+
signal: controller.signal,
|
|
70
|
+
});
|
|
71
|
+
return await this.handleResponse(response);
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
clearTimeout(timeoutId);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
async executeWithRetry(operation, retryCount = 0) {
|
|
79
|
+
try {
|
|
80
|
+
return await operation();
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// Handle abort error (timeout)
|
|
84
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
85
|
+
throw new ApiError('TIMEOUT', 'Request timed out', 408);
|
|
86
|
+
}
|
|
87
|
+
// Handle network errors
|
|
88
|
+
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
89
|
+
throw new ApiError('NETWORK_ERROR', `Network error: ${error.message}`, 0);
|
|
90
|
+
}
|
|
91
|
+
// Retry only on 429 (rate limited)
|
|
92
|
+
if (error instanceof ApiError &&
|
|
93
|
+
error.statusCode === 429 &&
|
|
94
|
+
retryCount < MAX_RETRIES) {
|
|
95
|
+
const delay = this.calculateRetryDelay(retryCount, error.details?.retryAfter);
|
|
96
|
+
await this.sleep(delay);
|
|
97
|
+
return this.executeWithRetry(operation, retryCount + 1);
|
|
98
|
+
}
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async handleResponse(response) {
|
|
103
|
+
// Try to parse response body
|
|
104
|
+
let body;
|
|
105
|
+
try {
|
|
106
|
+
body = (await response.json());
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// If response is not JSON
|
|
110
|
+
if (!response.ok) {
|
|
111
|
+
throw new ApiError('INTERNAL_ERROR', `HTTP ${response.status}: ${response.statusText}`, response.status);
|
|
112
|
+
}
|
|
113
|
+
throw new ApiError('INVALID_RESPONSE', 'Invalid JSON response from server', 500);
|
|
114
|
+
}
|
|
115
|
+
// Handle HTTP errors
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
const retryAfter = response.headers.get('Retry-After');
|
|
118
|
+
throw new ApiError(body.error?.code || 'UNKNOWN_ERROR', body.error?.message || `HTTP ${response.status}`, response.status, retryAfter ? { retryAfter } : undefined);
|
|
119
|
+
}
|
|
120
|
+
// Handle API-level errors
|
|
121
|
+
if (!body.success) {
|
|
122
|
+
throw new ApiError(body.error?.code || 'API_ERROR', body.error?.message || 'Unknown API error', 500);
|
|
123
|
+
}
|
|
124
|
+
return body.data;
|
|
125
|
+
}
|
|
126
|
+
calculateRetryDelay(retryCount, retryAfter) {
|
|
127
|
+
// Use Retry-After header if available
|
|
128
|
+
if (retryAfter) {
|
|
129
|
+
const seconds = parseInt(retryAfter, 10);
|
|
130
|
+
if (!isNaN(seconds) && seconds > 0) {
|
|
131
|
+
return Math.min(seconds * 1000, MAX_RETRY_DELAY);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Exponential backoff: 1s, 2s, 4s, ...
|
|
135
|
+
return Math.min(INITIAL_RETRY_DELAY * Math.pow(2, retryCount), MAX_RETRY_DELAY);
|
|
136
|
+
}
|
|
137
|
+
sleep(ms) {
|
|
138
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Resolve project name to UUID via /api/v1/project/resolve
|
|
143
|
+
*
|
|
144
|
+
* This is a standalone function used before HttpClient is fully initialized,
|
|
145
|
+
* since we need the projectId to construct HttpClient.
|
|
146
|
+
*
|
|
147
|
+
* @param apiKey - API key for authentication
|
|
148
|
+
* @param projectName - Project name from config.toml
|
|
149
|
+
* @returns Resolved project UUID
|
|
150
|
+
* @throws ApiError on authentication or resolution failure
|
|
151
|
+
*/
|
|
152
|
+
export async function resolveProject(apiKey, projectName) {
|
|
153
|
+
const url = `${API_ENDPOINT}/api/v1/project/resolve`;
|
|
154
|
+
const controller = new AbortController();
|
|
155
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
156
|
+
try {
|
|
157
|
+
const response = await fetch(url, {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
headers: {
|
|
160
|
+
Authorization: `Bearer ${apiKey}`,
|
|
161
|
+
'Content-Type': 'application/json',
|
|
162
|
+
},
|
|
163
|
+
body: JSON.stringify({ project_name: projectName }),
|
|
164
|
+
signal: controller.signal,
|
|
165
|
+
});
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
|
|
168
|
+
try {
|
|
169
|
+
const body = (await response.json());
|
|
170
|
+
errorMessage = body.error?.message || errorMessage;
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Ignore JSON parse error
|
|
174
|
+
}
|
|
175
|
+
throw new ApiError('PROJECT_RESOLVE_FAILED', errorMessage, response.status);
|
|
176
|
+
}
|
|
177
|
+
const body = (await response.json());
|
|
178
|
+
if (!body.success || !body.data?.project_id) {
|
|
179
|
+
throw new ApiError('PROJECT_RESOLVE_FAILED', body.error?.message || 'Failed to resolve project', 500);
|
|
180
|
+
}
|
|
181
|
+
return body.data.project_id;
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
if (error instanceof ApiError) {
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
188
|
+
throw new ApiError('TIMEOUT', 'Project resolve request timed out', 408);
|
|
189
|
+
}
|
|
190
|
+
throw new ApiError('NETWORK_ERROR', `Failed to resolve project: ${error instanceof Error ? error.message : String(error)}`, 0);
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
clearTimeout(timeoutId);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/saas-connector/client/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/saas-connector/client/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,OAAO,GACP,OAAO,GACP,KAAK,GACL,QAAQ,GACR,SAAS,CAAC;AAEd;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,WAAW,EAAE,WAAW,CAAC;IACzB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAG3C,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,SAAS,GAAG,OAAO,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,SAAS,CAAC,CAAC;IACtB,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/saas-connector/client/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/saas-connector/config/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAGnD,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,eAAe,QAAQ,CAAC;AAIrC,eAAO,MAAM,eAAe,gDAIlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAI7D,eAAO,MAAM,kBAAkB,mLAYrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// API endpoint is determined at build time for security
|
|
2
|
+
// OSS side cannot modify this value
|
|
3
|
+
export const API_ENDPOINT = 'https://api.sqlew.io';
|
|
4
|
+
// Retry configuration
|
|
5
|
+
export const MAX_RETRIES = 3;
|
|
6
|
+
export const INITIAL_RETRY_DELAY = 1000; // 1 second
|
|
7
|
+
export const MAX_RETRY_DELAY = 30000; // 30 seconds
|
|
8
|
+
export const REQUEST_TIMEOUT = 30000; // 30 seconds
|
|
9
|
+
// Supported tools for SaaS backend
|
|
10
|
+
// help, example, use_case are handled locally (TOML files, no DB access)
|
|
11
|
+
export const SUPPORTED_TOOLS = [
|
|
12
|
+
'decision',
|
|
13
|
+
'constraint',
|
|
14
|
+
'suggest',
|
|
15
|
+
];
|
|
16
|
+
// Actions that should be handled locally (no DB access required)
|
|
17
|
+
// Format: "tool.action"
|
|
18
|
+
export const LOCAL_ONLY_ACTIONS = [
|
|
19
|
+
// decision - TOML/hardcoded help
|
|
20
|
+
'decision.help',
|
|
21
|
+
'decision.example',
|
|
22
|
+
'decision.use_case',
|
|
23
|
+
// constraint - plan TOML cache + help
|
|
24
|
+
'constraint.suggest_pending',
|
|
25
|
+
'constraint.help',
|
|
26
|
+
'constraint.example',
|
|
27
|
+
'constraint.use_case',
|
|
28
|
+
// suggest - help only
|
|
29
|
+
'suggest.help',
|
|
30
|
+
];
|
|
31
|
+
/**
|
|
32
|
+
* Check if a tool.action combination should be handled locally
|
|
33
|
+
*/
|
|
34
|
+
export function isLocalOnlyAction(tool, action) {
|
|
35
|
+
return LOCAL_ONLY_ACTIONS.includes(`${tool}.${action}`);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/saas-connector/config/constants.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,oCAAoC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAEnD,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,CAAC,WAAW;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,aAAa;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,aAAa;AAEnD,mCAAmC;AACnC,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU;IACV,YAAY;IACZ,SAAS;CACD,CAAC;AAIX,iEAAiE;AACjE,wBAAwB;AACxB,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iCAAiC;IACjC,eAAe;IACf,kBAAkB;IAClB,mBAAmB;IACnB,sCAAsC;IACtC,4BAA4B;IAC5B,iBAAiB;IACjB,oBAAoB;IACpB,qBAAqB;IACrB,sBAAsB;IACtB,cAAc;CACN,CAAC;AAIX;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAc;IAC5D,OAAO,kBAAkB,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,MAAM,EAAqB,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-error.d.ts","sourceRoot":"","sources":["../../../src/saas-connector/errors/api-error.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;IAExB,IAAI,EAAE,MAAM;IAEZ,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAHjC,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAU1C,MAAM;;;;;;;CASP;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;CAUd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export class ApiError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
statusCode;
|
|
4
|
+
details;
|
|
5
|
+
constructor(code, message, statusCode, details) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.statusCode = statusCode;
|
|
9
|
+
this.details = details;
|
|
10
|
+
this.name = 'ApiError';
|
|
11
|
+
// Maintain proper stack trace in V8 environments
|
|
12
|
+
if (Error.captureStackTrace) {
|
|
13
|
+
Error.captureStackTrace(this, ApiError);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
toJSON() {
|
|
17
|
+
return {
|
|
18
|
+
name: this.name,
|
|
19
|
+
code: this.code,
|
|
20
|
+
message: this.message,
|
|
21
|
+
statusCode: this.statusCode,
|
|
22
|
+
details: this.details,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Error codes mapping
|
|
27
|
+
export const ERROR_CODES = {
|
|
28
|
+
INVALID_REQUEST: 400,
|
|
29
|
+
UNAUTHORIZED: 401,
|
|
30
|
+
FORBIDDEN: 403,
|
|
31
|
+
NOT_FOUND: 404,
|
|
32
|
+
RATE_LIMITED: 429,
|
|
33
|
+
INTERNAL_ERROR: 500,
|
|
34
|
+
UNSUPPORTED_TOOL: 400,
|
|
35
|
+
NETWORK_ERROR: 0,
|
|
36
|
+
TIMEOUT: 408,
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=api-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../../src/saas-connector/errors/api-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IAEA;IACA;IAJT,YACS,IAAY,EACnB,OAAe,EACR,UAAkB,EAClB,OAAiC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QALR,SAAI,GAAJ,IAAI,CAAQ;QAEZ,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAA0B;QAGxC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,iDAAiD;QACjD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAED,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,eAAe,EAAE,GAAG;IACpB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,GAAG;IACnB,gBAAgB,EAAE,GAAG;IACrB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,GAAG;CACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { resolveProject } from './client/http-client';
|
|
2
|
-
import type { CloudConfig, ToolBackend } from './client/types';
|
|
1
|
+
import { resolveProject } from './client/http-client.js';
|
|
2
|
+
import type { CloudConfig, ToolBackend } from './client/types.js';
|
|
3
3
|
export { resolveProject };
|
|
4
4
|
/**
|
|
5
5
|
* Create a SaaS backend instance
|
|
@@ -13,6 +13,6 @@ export declare const version = "1.0.0";
|
|
|
13
13
|
* Minimum compatible mcp-sqlew version
|
|
14
14
|
*/
|
|
15
15
|
export declare const minVersion = "4.4.0";
|
|
16
|
-
export type { CloudConfig, ConnectionIdentity, Environment, ToolBackend, HealthCheckResult, } from './client/types';
|
|
17
|
-
export { ApiError } from './errors/api-error';
|
|
16
|
+
export type { CloudConfig, ConnectionIdentity, Environment, ToolBackend, HealthCheckResult, } from './client/types.js';
|
|
17
|
+
export { ApiError } from './errors/api-error.js';
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/saas-connector/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE9D;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,UAAU,UAAU,CAAC;AAGlC,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SaaSBackend } from './backend/saas-backend.js';
|
|
2
|
+
import { resolveProject } from './client/http-client.js';
|
|
3
|
+
// Re-export resolveProject for use by mcp-sqlew
|
|
4
|
+
export { resolveProject };
|
|
5
|
+
/**
|
|
6
|
+
* Create a SaaS backend instance
|
|
7
|
+
*/
|
|
8
|
+
export function createBackend(config) {
|
|
9
|
+
return new SaaSBackend(config);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Plugin version (SemVer)
|
|
13
|
+
*/
|
|
14
|
+
export const version = '1.0.0';
|
|
15
|
+
/**
|
|
16
|
+
* Minimum compatible mcp-sqlew version
|
|
17
|
+
*/
|
|
18
|
+
export const minVersion = '4.4.0';
|
|
19
|
+
export { ApiError } from './errors/api-error.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/saas-connector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,gDAAgD;AAChD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC/C,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAUlC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sqlew",
|
|
3
3
|
"description": "Automated ADR (Architecture Decision Records) for Claude Code - MCP server with SQL-backed decision repository",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.1",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist/",
|
|
12
|
-
"saas-connector/",
|
|
13
12
|
"scripts/",
|
|
14
13
|
"assets/",
|
|
15
14
|
"docs/",
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
"MIGRATION_v2.md"
|
|
21
20
|
],
|
|
22
21
|
"scripts": {
|
|
23
|
-
"prebuild": "cd saas-connector && npm install && npm run build",
|
|
24
22
|
"build": "tsc && node scripts/copy-help-data.js",
|
|
25
23
|
"start": "node dist/index.js",
|
|
26
24
|
"dev": "tsc --watch",
|
|
@@ -66,7 +64,6 @@
|
|
|
66
64
|
"author": "sqlew-io",
|
|
67
65
|
"license": "Apache-2.0",
|
|
68
66
|
"dependencies": {
|
|
69
|
-
"@sqlew/saas-connector": "file:./saas-connector",
|
|
70
67
|
"@modelcontextprotocol/sdk": "^1.21.1",
|
|
71
68
|
"better-sqlite3": "^12.4.1",
|
|
72
69
|
"chokidar": "^4.0.3",
|