@robthepcguy/rag-vault 1.5.2 → 1.6.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/README.md +86 -14
- package/dist/bin/install-skills.d.ts.map +1 -0
- package/dist/bin/install-skills.js +16 -17
- package/dist/bin/install-skills.js.map +1 -0
- package/dist/chunker/index.d.ts.map +1 -0
- package/dist/chunker/index.js +1 -5
- package/dist/chunker/index.js.map +1 -0
- package/dist/chunker/semantic-chunker.d.ts.map +1 -0
- package/dist/chunker/semantic-chunker.js +9 -13
- package/dist/chunker/semantic-chunker.js.map +1 -0
- package/dist/chunker/sentence-splitter.d.ts.map +1 -0
- package/dist/chunker/sentence-splitter.js +1 -4
- package/dist/chunker/sentence-splitter.js.map +1 -0
- package/dist/embedder/index.d.ts +10 -0
- package/dist/embedder/index.d.ts.map +1 -0
- package/dist/embedder/index.js +58 -32
- package/dist/embedder/index.js.map +1 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +10 -17
- package/dist/errors/index.js.map +1 -0
- package/dist/explainability/index.d.ts.map +1 -0
- package/dist/explainability/index.js +1 -5
- package/dist/explainability/index.js.map +1 -0
- package/dist/explainability/keywords.d.ts.map +1 -0
- package/dist/explainability/keywords.js +1 -4
- package/dist/explainability/keywords.js.map +1 -0
- package/dist/flywheel/feedback.d.ts.map +1 -0
- package/dist/flywheel/feedback.js +15 -19
- package/dist/flywheel/feedback.js.map +1 -0
- package/dist/flywheel/index.d.ts.map +1 -0
- package/dist/flywheel/index.js +1 -5
- package/dist/flywheel/index.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -64
- package/dist/index.js.map +1 -0
- package/dist/parser/html-parser.d.ts.map +1 -0
- package/dist/parser/html-parser.js +7 -13
- package/dist/parser/html-parser.js.map +1 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +44 -52
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/pdf-filter.d.ts.map +1 -0
- package/dist/parser/pdf-filter.js +10 -16
- package/dist/parser/pdf-filter.js.map +1 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +1 -8
- package/dist/query/index.js.map +1 -0
- package/dist/query/parser.d.ts.map +1 -0
- package/dist/query/parser.js +5 -12
- package/dist/query/parser.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +106 -95
- package/dist/server/index.js.map +1 -0
- package/dist/server/raw-data-utils.d.ts.map +1 -0
- package/dist/server/raw-data-utils.js +21 -33
- package/dist/server/raw-data-utils.js.map +1 -0
- package/dist/server/remote-transport.d.ts +31 -0
- package/dist/server/remote-transport.d.ts.map +1 -0
- package/dist/server/remote-transport.js +177 -0
- package/dist/server/remote-transport.js.map +1 -0
- package/dist/server/schemas.d.ts.map +1 -0
- package/dist/server/schemas.js +35 -38
- package/dist/server/schemas.js.map +1 -0
- package/dist/utils/config-parsers.d.ts.map +1 -0
- package/dist/utils/config-parsers.js +3 -8
- package/dist/utils/config-parsers.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +12 -19
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/embedding-device-cli.d.ts +12 -0
- package/dist/utils/embedding-device-cli.d.ts.map +1 -0
- package/dist/utils/embedding-device-cli.js +61 -0
- package/dist/utils/embedding-device-cli.js.map +1 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +12 -18
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +2 -6
- package/dist/utils/math.js.map +1 -0
- package/dist/utils/process-handlers.d.ts.map +1 -0
- package/dist/utils/process-handlers.js +5 -10
- package/dist/utils/process-handlers.js.map +1 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +39 -45
- package/dist/vectordb/index.js.map +1 -0
- package/dist/web/api-routes.d.ts.map +1 -0
- package/dist/web/api-routes.js +41 -47
- package/dist/web/api-routes.js.map +1 -0
- package/dist/web/config-routes.d.ts.map +1 -0
- package/dist/web/config-routes.js +30 -33
- package/dist/web/config-routes.js.map +1 -0
- package/dist/web/database-manager.d.ts.map +1 -0
- package/dist/web/database-manager.js +67 -72
- package/dist/web/database-manager.js.map +1 -0
- package/dist/web/http-server.d.ts.map +1 -0
- package/dist/web/http-server.js +56 -89
- package/dist/web/http-server.js.map +1 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +31 -59
- package/dist/web/index.js.map +1 -0
- package/dist/web/middleware/async-handler.d.ts.map +1 -0
- package/dist/web/middleware/async-handler.js +1 -4
- package/dist/web/middleware/async-handler.js.map +1 -0
- package/dist/web/middleware/auth.d.ts.map +1 -0
- package/dist/web/middleware/auth.js +3 -6
- package/dist/web/middleware/auth.js.map +1 -0
- package/dist/web/middleware/error-handler.d.ts.map +1 -0
- package/dist/web/middleware/error-handler.js +4 -8
- package/dist/web/middleware/error-handler.js.map +1 -0
- package/dist/web/middleware/index.d.ts.map +1 -0
- package/dist/web/middleware/index.js +5 -17
- package/dist/web/middleware/index.js.map +1 -0
- package/dist/web/middleware/rate-limit.d.ts.map +1 -0
- package/dist/web/middleware/rate-limit.js +3 -8
- package/dist/web/middleware/rate-limit.js.map +1 -0
- package/dist/web/middleware/request-logger.d.ts.map +1 -0
- package/dist/web/middleware/request-logger.js +2 -6
- package/dist/web/middleware/request-logger.js.map +1 -0
- package/dist/web/types.d.ts.map +1 -0
- package/dist/web/types.js +1 -2
- package/dist/web/types.js.map +1 -0
- package/package.json +31 -35
- package/web-ui/dist/assets/CollectionsPage-BDmEfv3V.js +1 -0
- package/web-ui/dist/assets/FilesPage-pG9HmpgQ.js +1 -0
- package/web-ui/dist/assets/ReaderPage-CwMN03NU.js +28 -0
- package/web-ui/dist/assets/ReaderSettingsContext-CkSjqsRh.js +1 -0
- package/web-ui/dist/assets/SearchPage-DAltjnLL.js +1 -0
- package/web-ui/dist/assets/SettingsPage-C6J5BITP.js +1 -0
- package/web-ui/dist/assets/StatusPage-powRGmW3.js +1 -0
- package/web-ui/dist/assets/UploadPage-eyfSjL4u.js +8 -0
- package/web-ui/dist/assets/format-DOJ3IkRX.js +1 -0
- package/web-ui/dist/assets/index-BpwaiuGL.css +1 -0
- package/web-ui/dist/assets/index-D068MV_o.js +6 -0
- package/web-ui/dist/assets/link-indexer.worker-DGXNsXmZ.js +1 -0
- package/web-ui/dist/assets/motion-CKwJwI3J.js +9 -0
- package/web-ui/dist/assets/query-DPt-uCb6.js +1 -0
- package/web-ui/dist/assets/vendor-C2QPsZ3S.js +10 -0
- package/web-ui/dist/index.html +7 -2
- package/web-ui/dist/assets/index-SBHxoAwi.js +0 -120
- package/web-ui/dist/assets/index-ej8i4PGl.css +0 -1
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Raw Data Utilities for ingest_data tool
|
|
3
2
|
// Handles: base64url encoding, source normalization, file saving, source extraction
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.decodeBase64Url = decodeBase64Url;
|
|
7
|
-
exports.validateSourceProtocol = validateSourceProtocol;
|
|
8
|
-
exports.normalizeSource = normalizeSource;
|
|
9
|
-
exports.getRawDataDir = getRawDataDir;
|
|
10
|
-
exports.generateRawDataPath = generateRawDataPath;
|
|
11
|
-
exports.saveRawData = saveRawData;
|
|
12
|
-
exports.isRawDataPath = isRawDataPath;
|
|
13
|
-
exports.isManagedRawDataPath = isManagedRawDataPath;
|
|
14
|
-
exports.extractSourceFromPath = extractSourceFromPath;
|
|
15
|
-
const promises_1 = require("node:fs/promises");
|
|
16
|
-
const node_path_1 = require("node:path");
|
|
3
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
17
5
|
// ============================================
|
|
18
6
|
// Base64URL Encoding/Decoding
|
|
19
7
|
// ============================================
|
|
@@ -26,7 +14,7 @@ const node_path_1 = require("node:path");
|
|
|
26
14
|
* @param str - String to encode
|
|
27
15
|
* @returns URL-safe base64 encoded string
|
|
28
16
|
*/
|
|
29
|
-
function encodeBase64Url(str) {
|
|
17
|
+
export function encodeBase64Url(str) {
|
|
30
18
|
return Buffer.from(str, 'utf-8')
|
|
31
19
|
.toString('base64')
|
|
32
20
|
.replace(/\+/g, '-')
|
|
@@ -39,7 +27,7 @@ function encodeBase64Url(str) {
|
|
|
39
27
|
* @param base64url - URL-safe base64 encoded string
|
|
40
28
|
* @returns Decoded string
|
|
41
29
|
*/
|
|
42
|
-
function decodeBase64Url(base64url) {
|
|
30
|
+
export function decodeBase64Url(base64url) {
|
|
43
31
|
// Convert base64url to standard base64
|
|
44
32
|
let base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');
|
|
45
33
|
// Add padding if needed
|
|
@@ -64,7 +52,7 @@ const BLOCKED_PROTOCOLS = ['javascript:', 'vbscript:', 'data:'];
|
|
|
64
52
|
* @param source - Source identifier to validate
|
|
65
53
|
* @throws Error if the protocol is blocked
|
|
66
54
|
*/
|
|
67
|
-
function validateSourceProtocol(source) {
|
|
55
|
+
export function validateSourceProtocol(source) {
|
|
68
56
|
try {
|
|
69
57
|
const parsed = new URL(source);
|
|
70
58
|
if (BLOCKED_PROTOCOLS.includes(parsed.protocol)) {
|
|
@@ -87,7 +75,7 @@ function validateSourceProtocol(source) {
|
|
|
87
75
|
* @returns Normalized source
|
|
88
76
|
* @throws Error if the source uses a disallowed protocol
|
|
89
77
|
*/
|
|
90
|
-
function normalizeSource(source) {
|
|
78
|
+
export function normalizeSource(source) {
|
|
91
79
|
// Validate protocol before processing
|
|
92
80
|
validateSourceProtocol(source);
|
|
93
81
|
try {
|
|
@@ -113,8 +101,8 @@ function normalizeSource(source) {
|
|
|
113
101
|
* @param dbPath - LanceDB database path
|
|
114
102
|
* @returns Raw-data directory path
|
|
115
103
|
*/
|
|
116
|
-
function getRawDataDir(dbPath) {
|
|
117
|
-
return
|
|
104
|
+
export function getRawDataDir(dbPath) {
|
|
105
|
+
return join(dbPath, 'raw-data');
|
|
118
106
|
}
|
|
119
107
|
/**
|
|
120
108
|
* Generate raw-data file path from source and format
|
|
@@ -125,12 +113,12 @@ function getRawDataDir(dbPath) {
|
|
|
125
113
|
* @param format - Content format
|
|
126
114
|
* @returns Generated file path
|
|
127
115
|
*/
|
|
128
|
-
function generateRawDataPath(dbPath, source, _format) {
|
|
116
|
+
export function generateRawDataPath(dbPath, source, _format) {
|
|
129
117
|
const normalizedSource = normalizeSource(source);
|
|
130
118
|
const encoded = encodeBase64Url(normalizedSource);
|
|
131
119
|
// All formats use .md extension for consistency
|
|
132
120
|
// This allows generating unique path from source without knowing original format
|
|
133
|
-
return
|
|
121
|
+
return resolve(getRawDataDir(dbPath), `${encoded}.md`);
|
|
134
122
|
}
|
|
135
123
|
// ============================================
|
|
136
124
|
// File Operations
|
|
@@ -145,12 +133,12 @@ function generateRawDataPath(dbPath, source, _format) {
|
|
|
145
133
|
* @param format - Content format
|
|
146
134
|
* @returns Saved file path
|
|
147
135
|
*/
|
|
148
|
-
async function saveRawData(dbPath, source, content, format) {
|
|
136
|
+
export async function saveRawData(dbPath, source, content, format) {
|
|
149
137
|
const filePath = generateRawDataPath(dbPath, source, format);
|
|
150
138
|
// Ensure directory exists
|
|
151
|
-
await
|
|
139
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
152
140
|
// Write content to file
|
|
153
|
-
await
|
|
141
|
+
await writeFile(filePath, content, 'utf-8');
|
|
154
142
|
return filePath;
|
|
155
143
|
}
|
|
156
144
|
// ============================================
|
|
@@ -158,14 +146,14 @@ async function saveRawData(dbPath, source, content, format) {
|
|
|
158
146
|
// ============================================
|
|
159
147
|
// Path patterns for raw-data directory detection (cross-platform)
|
|
160
148
|
const RAW_DATA_POSIX = '/raw-data/';
|
|
161
|
-
const RAW_DATA_NATIVE = `${
|
|
149
|
+
const RAW_DATA_NATIVE = `${sep}raw-data${sep}`;
|
|
162
150
|
/**
|
|
163
151
|
* Check if file path is in raw-data directory
|
|
164
152
|
*
|
|
165
153
|
* @param filePath - File path to check
|
|
166
154
|
* @returns True if path is in raw-data directory
|
|
167
155
|
*/
|
|
168
|
-
function isRawDataPath(filePath) {
|
|
156
|
+
export function isRawDataPath(filePath) {
|
|
169
157
|
return filePath.includes(RAW_DATA_NATIVE) || filePath.includes(RAW_DATA_POSIX);
|
|
170
158
|
}
|
|
171
159
|
/**
|
|
@@ -176,11 +164,11 @@ function isRawDataPath(filePath) {
|
|
|
176
164
|
* @param filePath - File path to validate
|
|
177
165
|
* @returns True only if filePath is inside <dbPath>/raw-data
|
|
178
166
|
*/
|
|
179
|
-
function isManagedRawDataPath(dbPath, filePath) {
|
|
180
|
-
const rawDataDir =
|
|
181
|
-
const resolvedPath =
|
|
182
|
-
const rel =
|
|
183
|
-
return rel === '' || (!rel.startsWith('..') && !
|
|
167
|
+
export function isManagedRawDataPath(dbPath, filePath) {
|
|
168
|
+
const rawDataDir = resolve(getRawDataDir(dbPath));
|
|
169
|
+
const resolvedPath = resolve(filePath);
|
|
170
|
+
const rel = relative(rawDataDir, resolvedPath);
|
|
171
|
+
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
184
172
|
}
|
|
185
173
|
/**
|
|
186
174
|
* Extract original source from raw-data file path
|
|
@@ -189,7 +177,7 @@ function isManagedRawDataPath(dbPath, filePath) {
|
|
|
189
177
|
* @param filePath - Raw-data file path
|
|
190
178
|
* @returns Original source or null
|
|
191
179
|
*/
|
|
192
|
-
function extractSourceFromPath(filePath) {
|
|
180
|
+
export function extractSourceFromPath(filePath) {
|
|
193
181
|
// Try native path separator first, then POSIX
|
|
194
182
|
let rawDataIndex = filePath.indexOf(RAW_DATA_NATIVE);
|
|
195
183
|
let markerLength = RAW_DATA_NATIVE.length;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-data-utils.js","sourceRoot":"","sources":["../../src/server/raw-data-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote MCP transport: Streamable HTTP + SSE (backwards-compat)
|
|
3
|
+
*
|
|
4
|
+
* Allows RAG Vault to be connected from Claude.ai, Claude Desktop,
|
|
5
|
+
* or any MCP client that supports remote servers.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx github:RobThePCGuy/rag-vault --remote # starts on port 3001
|
|
9
|
+
* npx github:RobThePCGuy/rag-vault --remote --port 8080
|
|
10
|
+
*/
|
|
11
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
12
|
+
export interface RemoteTransportOptions {
|
|
13
|
+
/** Port to listen on (default: 3001, or WEB_PORT env) */
|
|
14
|
+
port?: number;
|
|
15
|
+
/** Factory that returns a fresh McpServer per session */
|
|
16
|
+
createServer: () => McpServer;
|
|
17
|
+
/** Optional API key for authentication (uses RAG_API_KEY env if not set) */
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
/** Allowed CORS origins (default: "*" for dev, restrict in production) */
|
|
20
|
+
corsOrigins?: string | string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Starts the MCP server with Streamable HTTP + SSE transports.
|
|
24
|
+
*
|
|
25
|
+
* POST/GET/DELETE /mcp -> Streamable HTTP (modern clients)
|
|
26
|
+
* GET /sse -> SSE endpoint (legacy clients)
|
|
27
|
+
* POST /messages -> SSE message endpoint (legacy clients)
|
|
28
|
+
* GET /health -> Health check
|
|
29
|
+
*/
|
|
30
|
+
export declare function startRemoteTransport(options: RemoteTransportOptions): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=remote-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-transport.d.ts","sourceRoot":"","sources":["../../src/server/remote-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AASxE,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,YAAY,EAAE,MAAM,SAAS,CAAA;IAC7B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAChC;AAMD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8KzF"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote MCP transport: Streamable HTTP + SSE (backwards-compat)
|
|
3
|
+
*
|
|
4
|
+
* Allows RAG Vault to be connected from Claude.ai, Claude Desktop,
|
|
5
|
+
* or any MCP client that supports remote servers.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx github:RobThePCGuy/rag-vault --remote # starts on port 3001
|
|
9
|
+
* npx github:RobThePCGuy/rag-vault --remote --port 8080
|
|
10
|
+
*/
|
|
11
|
+
import express from 'express';
|
|
12
|
+
import { randomUUID } from 'node:crypto';
|
|
13
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
14
|
+
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
15
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// TRANSPORT SETUP
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Starts the MCP server with Streamable HTTP + SSE transports.
|
|
21
|
+
*
|
|
22
|
+
* POST/GET/DELETE /mcp -> Streamable HTTP (modern clients)
|
|
23
|
+
* GET /sse -> SSE endpoint (legacy clients)
|
|
24
|
+
* POST /messages -> SSE message endpoint (legacy clients)
|
|
25
|
+
* GET /health -> Health check
|
|
26
|
+
*/
|
|
27
|
+
export async function startRemoteTransport(options) {
|
|
28
|
+
const { createServer, port = Number.parseInt(process.env['WEB_PORT'] || '3001', 10), apiKey = process.env['RAG_API_KEY'], corsOrigins = process.env['CORS_ORIGINS'] || '*', } = options;
|
|
29
|
+
const app = express();
|
|
30
|
+
app.use(express.json());
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// CORS - required for Claude.ai to connect
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
app.use((_req, res, next) => {
|
|
35
|
+
const origin = Array.isArray(corsOrigins) ? corsOrigins.join(', ') : corsOrigins;
|
|
36
|
+
res.header('Access-Control-Allow-Origin', origin);
|
|
37
|
+
res.header('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
|
|
38
|
+
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Mcp-Session-Id');
|
|
39
|
+
res.header('Access-Control-Expose-Headers', 'Mcp-Session-Id');
|
|
40
|
+
next();
|
|
41
|
+
});
|
|
42
|
+
// Handle preflight separately to avoid return-type issues
|
|
43
|
+
app.options('*', (_req, res) => {
|
|
44
|
+
res.sendStatus(204);
|
|
45
|
+
});
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Optional: API Key Authentication
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
const authMiddleware = (req, res, next) => {
|
|
50
|
+
if (!apiKey)
|
|
51
|
+
return next();
|
|
52
|
+
const authHeader = req.headers.authorization;
|
|
53
|
+
if (!authHeader || authHeader !== `Bearer ${apiKey}`) {
|
|
54
|
+
res.status(401).json({ error: 'Unauthorized' });
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
next();
|
|
58
|
+
};
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// Session tracking
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
const sessions = new Map();
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// 1. STREAMABLE HTTP TRANSPORT (modern - recommended)
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
app.post('/mcp', authMiddleware, async (req, res) => {
|
|
67
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
68
|
+
if (sessionId && sessions.has(sessionId)) {
|
|
69
|
+
const session = sessions.get(sessionId);
|
|
70
|
+
const transport = session.transport;
|
|
71
|
+
await transport.handleRequest(req, res, req.body);
|
|
72
|
+
}
|
|
73
|
+
else if (!sessionId && isInitializeRequest(req.body)) {
|
|
74
|
+
const server = createServer();
|
|
75
|
+
const transport = new StreamableHTTPServerTransport({
|
|
76
|
+
sessionIdGenerator: () => randomUUID(),
|
|
77
|
+
onsessioninitialized: (newSessionId) => {
|
|
78
|
+
sessions.set(newSessionId, { transport, server });
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
res.on('close', () => {
|
|
82
|
+
const sid = transport.sessionId;
|
|
83
|
+
if (sid)
|
|
84
|
+
sessions.delete(sid);
|
|
85
|
+
transport.close();
|
|
86
|
+
server.close();
|
|
87
|
+
});
|
|
88
|
+
// biome-ignore lint/suspicious/noExplicitAny: McpServer.connect accepts Transport but TS exact-optional mismatch
|
|
89
|
+
await server.connect(transport);
|
|
90
|
+
await transport.handleRequest(req, res, req.body);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
res.status(400).json({
|
|
94
|
+
jsonrpc: '2.0',
|
|
95
|
+
error: { code: -32000, message: 'Bad Request: No valid session' },
|
|
96
|
+
id: null,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
app.get('/mcp', authMiddleware, async (req, res) => {
|
|
101
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
102
|
+
if (sessionId && sessions.has(sessionId)) {
|
|
103
|
+
const session = sessions.get(sessionId);
|
|
104
|
+
const transport = session.transport;
|
|
105
|
+
await transport.handleRequest(req, res);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
res.status(400).json({ error: 'No valid session for GET' });
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
app.delete('/mcp', authMiddleware, async (req, res) => {
|
|
112
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
113
|
+
if (sessionId && sessions.has(sessionId)) {
|
|
114
|
+
const session = sessions.get(sessionId);
|
|
115
|
+
sessions.delete(sessionId);
|
|
116
|
+
session.transport.close();
|
|
117
|
+
session.server.close();
|
|
118
|
+
res.status(200).json({ message: 'Session closed' });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
res.status(404).json({ error: 'Session not found' });
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// 2. SSE TRANSPORT (legacy - backwards compatibility)
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
app.get('/sse', authMiddleware, async (_req, res) => {
|
|
128
|
+
const transport = new SSEServerTransport('/messages', res);
|
|
129
|
+
const server = createServer();
|
|
130
|
+
sessions.set(transport.sessionId, { transport, server });
|
|
131
|
+
res.on('close', () => {
|
|
132
|
+
sessions.delete(transport.sessionId);
|
|
133
|
+
server.close();
|
|
134
|
+
});
|
|
135
|
+
// biome-ignore lint/suspicious/noExplicitAny: McpServer.connect accepts Transport but TS exact-optional mismatch
|
|
136
|
+
await server.connect(transport);
|
|
137
|
+
});
|
|
138
|
+
app.post('/messages', authMiddleware, async (req, res) => {
|
|
139
|
+
const sessionId = req.query['sessionId'];
|
|
140
|
+
const session = sessions.get(sessionId);
|
|
141
|
+
if (session && session.transport instanceof SSEServerTransport) {
|
|
142
|
+
await session.transport.handlePostMessage(req, res);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
res.status(404).json({ error: 'Session not found' });
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
// 3. HEALTH CHECK
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
app.get('/health', (_req, res) => {
|
|
152
|
+
res.json({
|
|
153
|
+
status: 'ok',
|
|
154
|
+
transport: 'streamable-http + sse',
|
|
155
|
+
sessions: sessions.size,
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
// ---------------------------------------------------------------------------
|
|
159
|
+
// START
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
app.listen(port, () => {
|
|
162
|
+
console.error(`RAG Vault MCP server (remote) listening on port ${port}`);
|
|
163
|
+
console.error(` Streamable HTTP: http://localhost:${port}/mcp`);
|
|
164
|
+
console.error(` SSE (legacy): http://localhost:${port}/sse`);
|
|
165
|
+
console.error(` Health check: http://localhost:${port}/health`);
|
|
166
|
+
console.error();
|
|
167
|
+
console.error('To connect from Claude.ai or Claude Desktop:');
|
|
168
|
+
console.error(` URL: http://localhost:${port}/mcp`);
|
|
169
|
+
if (apiKey) {
|
|
170
|
+
console.error(' Auth: Bearer token required (RAG_API_KEY is set)');
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.error(' Auth: None (set RAG_API_KEY for production)');
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=remote-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-transport.js","sourceRoot":"","sources":["../../src/server/remote-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/server/schemas.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,mBAAmB,yCAAuC,CAAA;AAEvE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAoB/B,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sDAQ9B,CAAA;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAM3B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EASnC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM3B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAiBzB,CAAA;AAMJ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACtE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAM9D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,iEAAiE;IACjE,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,4BAA4B;IAC5B,WAAW,EAAE,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,CAAA;CAC/E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,sBAAsB,CAAA;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,QAAQ,GAAG,aAAa,CAAA;CACrC;AAMD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpC,CAAA"}
|
package/dist/server/schemas.js
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Zod schemas for MCP tool validation
|
|
3
2
|
// Used by RAGServer with McpServer high-level API
|
|
4
|
-
|
|
5
|
-
exports.RecentDatabasesFileSchema = exports.StatusResponseSchema = exports.DeleteFileSchema = exports.IngestDataSchema = exports.IngestDataMetadataSchema = exports.IngestFileSchema = exports.CustomMetadataSchema = exports.QueryDocumentsSchema = exports.ContentFormatSchema = void 0;
|
|
6
|
-
const zod_1 = require("zod");
|
|
3
|
+
import { z } from 'zod';
|
|
7
4
|
/**
|
|
8
5
|
* Content format enum for ingest_data
|
|
9
6
|
*/
|
|
10
|
-
|
|
7
|
+
export const ContentFormatSchema = z.enum(['text', 'html', 'markdown']);
|
|
11
8
|
/**
|
|
12
9
|
* query_documents tool input schema
|
|
13
10
|
*/
|
|
14
|
-
|
|
15
|
-
query:
|
|
11
|
+
export const QueryDocumentsSchema = z.object({
|
|
12
|
+
query: z
|
|
16
13
|
.string()
|
|
17
14
|
.min(1, 'Query cannot be empty')
|
|
18
15
|
.describe('Search query. Include specific terms and add context if needed.'),
|
|
19
|
-
limit:
|
|
16
|
+
limit: z
|
|
20
17
|
.number()
|
|
21
18
|
.int()
|
|
22
19
|
.positive()
|
|
23
20
|
.max(20, 'Limit cannot exceed 20')
|
|
24
21
|
.optional()
|
|
25
22
|
.describe('Maximum number of results to return (default: 10, max: 20). Recommended: 5 for precision, 10 for balance, 20 for broad exploration.'),
|
|
26
|
-
explain:
|
|
23
|
+
explain: z
|
|
27
24
|
.boolean()
|
|
28
25
|
.optional()
|
|
29
26
|
.describe('Include explanation of why each result matched (shared keywords, phrases, match type).'),
|
|
@@ -32,51 +29,51 @@ exports.QueryDocumentsSchema = zod_1.z.object({
|
|
|
32
29
|
* Custom metadata schema for ingestion
|
|
33
30
|
* Enforces reasonable limits on key/value sizes to prevent abuse
|
|
34
31
|
*/
|
|
35
|
-
|
|
36
|
-
.record(
|
|
32
|
+
export const CustomMetadataSchema = z
|
|
33
|
+
.record(z.string().max(100, 'Metadata key must be at most 100 characters'), z.string().max(1000, 'Metadata value must be at most 1000 characters'))
|
|
37
34
|
.optional()
|
|
38
35
|
.describe('Optional custom metadata fields (e.g., {"author": "John", "domain": "legal", "tags": "contract,review"})');
|
|
39
36
|
/**
|
|
40
37
|
* ingest_file tool input schema
|
|
41
38
|
*/
|
|
42
|
-
|
|
43
|
-
filePath:
|
|
39
|
+
export const IngestFileSchema = z.object({
|
|
40
|
+
filePath: z
|
|
44
41
|
.string()
|
|
45
42
|
.min(1, 'File path cannot be empty')
|
|
46
43
|
.describe('Absolute path to the file to ingest. Example: "/Users/user/documents/manual.pdf"'),
|
|
47
|
-
metadata:
|
|
44
|
+
metadata: CustomMetadataSchema,
|
|
48
45
|
});
|
|
49
46
|
/**
|
|
50
47
|
* ingest_data metadata schema
|
|
51
48
|
*/
|
|
52
|
-
|
|
53
|
-
source:
|
|
49
|
+
export const IngestDataMetadataSchema = z.object({
|
|
50
|
+
source: z
|
|
54
51
|
.string()
|
|
55
52
|
.min(1, 'Source cannot be empty')
|
|
56
53
|
.describe('Source identifier. For web pages, use the URL (e.g., "https://example.com/page"). For other content, use URL-scheme format: "{type}://{date}" or "{type}://{date}/{detail}". Examples: "clipboard://2024-12-30", "chat://2024-12-30/project-discussion".'),
|
|
57
|
-
format:
|
|
58
|
-
custom:
|
|
54
|
+
format: ContentFormatSchema.describe('Content format: "text", "html", or "markdown"'),
|
|
55
|
+
custom: CustomMetadataSchema,
|
|
59
56
|
});
|
|
60
57
|
/**
|
|
61
58
|
* ingest_data tool input schema
|
|
62
59
|
*/
|
|
63
|
-
|
|
64
|
-
content:
|
|
60
|
+
export const IngestDataSchema = z.object({
|
|
61
|
+
content: z
|
|
65
62
|
.string()
|
|
66
63
|
.min(1, 'Content cannot be empty')
|
|
67
64
|
.describe('The content to ingest (text, HTML, or Markdown)'),
|
|
68
|
-
metadata:
|
|
65
|
+
metadata: IngestDataMetadataSchema.describe('Content metadata'),
|
|
69
66
|
});
|
|
70
67
|
/**
|
|
71
68
|
* delete_file tool input schema
|
|
72
69
|
*/
|
|
73
|
-
|
|
70
|
+
export const DeleteFileSchema = z
|
|
74
71
|
.object({
|
|
75
|
-
filePath:
|
|
72
|
+
filePath: z
|
|
76
73
|
.string()
|
|
77
74
|
.optional()
|
|
78
75
|
.describe('Absolute path to the file (for ingest_file). Example: "/Users/user/documents/manual.pdf"'),
|
|
79
|
-
source:
|
|
76
|
+
source: z
|
|
80
77
|
.string()
|
|
81
78
|
.optional()
|
|
82
79
|
.describe('Source identifier used in ingest_data. Examples: "https://example.com/page", "clipboard://2024-12-30"'),
|
|
@@ -90,24 +87,24 @@ exports.DeleteFileSchema = zod_1.z
|
|
|
90
87
|
/**
|
|
91
88
|
* Schema for validating status response from RAG server
|
|
92
89
|
*/
|
|
93
|
-
|
|
94
|
-
documentCount:
|
|
95
|
-
chunkCount:
|
|
96
|
-
memoryUsage:
|
|
97
|
-
uptime:
|
|
98
|
-
ftsIndexEnabled:
|
|
99
|
-
searchMode:
|
|
90
|
+
export const StatusResponseSchema = z.object({
|
|
91
|
+
documentCount: z.number(),
|
|
92
|
+
chunkCount: z.number(),
|
|
93
|
+
memoryUsage: z.number(),
|
|
94
|
+
uptime: z.number(),
|
|
95
|
+
ftsIndexEnabled: z.boolean(),
|
|
96
|
+
searchMode: z.enum(['hybrid', 'vector-only']),
|
|
100
97
|
});
|
|
101
98
|
/**
|
|
102
99
|
* Schema for validating recent databases file structure
|
|
103
100
|
*/
|
|
104
|
-
|
|
105
|
-
version:
|
|
106
|
-
databases:
|
|
107
|
-
path:
|
|
108
|
-
name:
|
|
109
|
-
lastAccessed:
|
|
110
|
-
modelName:
|
|
101
|
+
export const RecentDatabasesFileSchema = z.object({
|
|
102
|
+
version: z.number(),
|
|
103
|
+
databases: z.array(z.object({
|
|
104
|
+
path: z.string(),
|
|
105
|
+
name: z.string(),
|
|
106
|
+
lastAccessed: z.string(),
|
|
107
|
+
modelName: z.string().optional(),
|
|
111
108
|
})),
|
|
112
109
|
});
|
|
113
110
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/server/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-parsers.d.ts","sourceRoot":"","sources":["../../src/utils/config-parsers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAUrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQ9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAU/E"}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Shared configuration parsing utilities
|
|
3
2
|
// Used by both MCP server (src/index.ts) and Web server (src/web/index.ts)
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.parseGroupingMode = parseGroupingMode;
|
|
6
|
-
exports.parseMaxDistance = parseMaxDistance;
|
|
7
|
-
exports.parseHybridWeight = parseHybridWeight;
|
|
8
3
|
/**
|
|
9
4
|
* Parse grouping mode from environment variable
|
|
10
5
|
*/
|
|
11
|
-
function parseGroupingMode(value) {
|
|
6
|
+
export function parseGroupingMode(value) {
|
|
12
7
|
if (!value)
|
|
13
8
|
return undefined;
|
|
14
9
|
const normalized = value.toLowerCase().trim();
|
|
@@ -21,7 +16,7 @@ function parseGroupingMode(value) {
|
|
|
21
16
|
/**
|
|
22
17
|
* Parse max distance from environment variable
|
|
23
18
|
*/
|
|
24
|
-
function parseMaxDistance(value) {
|
|
19
|
+
export function parseMaxDistance(value) {
|
|
25
20
|
if (!value)
|
|
26
21
|
return undefined;
|
|
27
22
|
const parsed = Number.parseFloat(value);
|
|
@@ -34,7 +29,7 @@ function parseMaxDistance(value) {
|
|
|
34
29
|
/**
|
|
35
30
|
* Parse hybrid weight from environment variable
|
|
36
31
|
*/
|
|
37
|
-
function parseHybridWeight(value) {
|
|
32
|
+
export function parseHybridWeight(value) {
|
|
38
33
|
if (!value)
|
|
39
34
|
return undefined;
|
|
40
35
|
const parsed = Number.parseFloat(value);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-parsers.js","sourceRoot":"","sources":["../../src/utils/config-parsers.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,2EAA2E;AAI3E;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAC7C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACzD,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,CAAC,KAAK,CACX,gCAAgC,KAAK,+CAA+C,CACrF,CAAA;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,wCAAwC,CAAC,CAAA;QAChG,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CACX,qCAAqC,KAAK,2CAA2C,CACtF,CAAA;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAgBxD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CA6BxE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwDzD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAqBnD"}
|