@retrivora-ai/rag-engine 1.0.0 → 1.0.2
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/dist/{ChromaDBProvider-APQVJ5F7.mjs → ChromaDBProvider-MIDOR4FW.mjs} +2 -2
- package/dist/{MilvusProvider-35US67MS.mjs → MilvusProvider-U7SKC27V.mjs} +2 -2
- package/dist/{MongoDBProvider-COVYZDP6.mjs → MongoDBProvider-BO2Y5DRR.mjs} +2 -2
- package/dist/{PineconeProvider-AWFJQDZL.mjs → PineconeProvider-QZNRKTN2.mjs} +2 -2
- package/dist/{PostgreSQLProvider-IEYRJ7XJ.mjs → PostgreSQLProvider-BMOETDZA.mjs} +1 -1
- package/dist/{QdrantProvider-M6TQYZRO.mjs → QdrantProvider-YNUNEOZH.mjs} +2 -2
- package/dist/{RedisProvider-3G5PBLZ4.mjs → RedisProvider-SR65SCKV.mjs} +2 -2
- package/dist/{SimpleGraphProvider-UK7DJW37.mjs → SimpleGraphProvider-SLOXO4M7.mjs} +1 -1
- package/dist/{UniversalVectorProvider-FYQ3B2PW.mjs → UniversalVectorProvider-IN67OS56.mjs} +3 -3
- package/dist/{WeaviateProvider-ITHO36IL.mjs → WeaviateProvider-5FWDFITI.mjs} +2 -2
- package/dist/{chunk-4A47RCG2.mjs → chunk-3DSHW676.mjs} +1 -1
- package/dist/{chunk-NXUCKY5L.mjs → chunk-5YGUXK7Z.mjs} +1 -1
- package/dist/{chunk-7SOSCZGS.mjs → chunk-73I6VWU3.mjs} +2 -2
- package/dist/{chunk-WGSZNY3X.mjs → chunk-CFVEZTBJ.mjs} +1 -1
- package/dist/{chunk-U6KHVZLF.mjs → chunk-LR3VMDVK.mjs} +2 -2
- package/dist/{chunk-OOQXNLXD.mjs → chunk-M6JSPGAR.mjs} +1 -1
- package/dist/{chunk-P4HAQ7KB.mjs → chunk-OJNAKSQ2.mjs} +90 -34
- package/dist/{chunk-TYHTZIDP.mjs → chunk-U55XRW3U.mjs} +1 -1
- package/dist/{chunk-ZNBKHNJ4.mjs → chunk-VUQJVIJT.mjs} +1 -1
- package/dist/{chunk-QMIKLALV.mjs → chunk-X4TOT24V.mjs} +32 -0
- package/dist/{chunk-67AJ6SMD.mjs → chunk-YLTMFW4M.mjs} +1 -1
- package/dist/handlers/index.d.mts +1 -1
- package/dist/handlers/index.d.ts +1 -1
- package/dist/handlers/index.js +109 -22
- package/dist/handlers/index.mjs +5 -3
- package/dist/{index-CrGMwXfO.d.ts → index-B2mutkgp.d.ts} +5 -1
- package/dist/{index-v669iV-k.d.mts → index-Bjy0es5a.d.mts} +5 -1
- package/dist/index.d.mts +13 -7
- package/dist/index.d.ts +13 -7
- package/dist/index.js +325 -380
- package/dist/index.mjs +315 -370
- package/dist/server.d.mts +7 -22
- package/dist/server.d.ts +7 -22
- package/dist/server.js +48 -22
- package/dist/server.mjs +11 -11
- package/package.json +1 -1
- package/src/components/ChatWindow.tsx +4 -3
- package/src/components/MessageBubble.tsx +5 -2
- package/src/core/Pipeline.ts +1 -0
- package/src/core/VectorPlugin.ts +13 -22
- package/src/handlers/index.ts +53 -0
- package/src/hooks/useRagChat.ts +79 -15
- package/src/providers/vectordb/MongoDBProvider.ts +1 -1
- package/src/rag/EntityExtractor.ts +3 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UniversalVectorProvider
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-LR3VMDVK.mjs";
|
|
4
|
+
import "./chunk-YLTMFW4M.mjs";
|
|
5
5
|
import "./chunk-IMP6FUCY.mjs";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-X4TOT24V.mjs";
|
|
7
7
|
export {
|
|
8
8
|
UniversalVectorProvider
|
|
9
9
|
};
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-IMP6FUCY.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__spreadValues
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-X4TOT24V.mjs";
|
|
7
7
|
|
|
8
8
|
// src/providers/vectordb/MongoDBProvider.ts
|
|
9
9
|
import { MongoClient } from "mongodb";
|
|
@@ -14,7 +14,7 @@ var MongoDBProvider = class extends BaseVectorProvider {
|
|
|
14
14
|
if (!opts.uri || !opts.database || !opts.collection) {
|
|
15
15
|
throw new Error("[MongoDBProvider] options uri, database, and collection are required.");
|
|
16
16
|
}
|
|
17
|
-
this.client = new MongoClient(opts.uri);
|
|
17
|
+
this.client = new MongoClient(opts.uri, { serverSelectionTimeoutMS: 5e3 });
|
|
18
18
|
this.dbName = opts.database;
|
|
19
19
|
this.collectionName = opts.collection;
|
|
20
20
|
this.embeddingKey = opts.embeddingKey || "embedding";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildPayload,
|
|
3
3
|
resolvePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YLTMFW4M.mjs";
|
|
5
5
|
import {
|
|
6
6
|
BaseVectorProvider
|
|
7
7
|
} from "./chunk-IMP6FUCY.mjs";
|
|
8
8
|
import {
|
|
9
9
|
__spreadValues
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-X4TOT24V.mjs";
|
|
11
11
|
|
|
12
12
|
// src/providers/vectordb/UniversalVectorProvider.ts
|
|
13
13
|
import axios from "axios";
|
|
@@ -2,14 +2,15 @@ import {
|
|
|
2
2
|
buildPayload,
|
|
3
3
|
mergeDefined,
|
|
4
4
|
resolvePath
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YLTMFW4M.mjs";
|
|
6
6
|
import {
|
|
7
7
|
__asyncGenerator,
|
|
8
8
|
__await,
|
|
9
9
|
__forAwait,
|
|
10
10
|
__spreadProps,
|
|
11
|
-
__spreadValues
|
|
12
|
-
|
|
11
|
+
__spreadValues,
|
|
12
|
+
__yieldStar
|
|
13
|
+
} from "./chunk-X4TOT24V.mjs";
|
|
13
14
|
|
|
14
15
|
// src/handlers/index.ts
|
|
15
16
|
import { NextResponse } from "next/server";
|
|
@@ -1078,41 +1079,41 @@ var ProviderRegistry = class {
|
|
|
1078
1079
|
if (this.vectorProviders[provider]) return this.vectorProviders[provider];
|
|
1079
1080
|
switch (provider) {
|
|
1080
1081
|
case "pinecone": {
|
|
1081
|
-
const { PineconeProvider } = await import("./PineconeProvider-
|
|
1082
|
+
const { PineconeProvider } = await import("./PineconeProvider-QZNRKTN2.mjs");
|
|
1082
1083
|
return PineconeProvider;
|
|
1083
1084
|
}
|
|
1084
1085
|
case "pgvector":
|
|
1085
1086
|
case "postgresql": {
|
|
1086
|
-
const { PostgreSQLProvider } = await import("./PostgreSQLProvider-
|
|
1087
|
+
const { PostgreSQLProvider } = await import("./PostgreSQLProvider-BMOETDZA.mjs");
|
|
1087
1088
|
return PostgreSQLProvider;
|
|
1088
1089
|
}
|
|
1089
1090
|
case "mongodb": {
|
|
1090
|
-
const { MongoDBProvider } = await import("./MongoDBProvider-
|
|
1091
|
+
const { MongoDBProvider } = await import("./MongoDBProvider-BO2Y5DRR.mjs");
|
|
1091
1092
|
return MongoDBProvider;
|
|
1092
1093
|
}
|
|
1093
1094
|
case "milvus": {
|
|
1094
|
-
const { MilvusProvider } = await import("./MilvusProvider-
|
|
1095
|
+
const { MilvusProvider } = await import("./MilvusProvider-U7SKC27V.mjs");
|
|
1095
1096
|
return MilvusProvider;
|
|
1096
1097
|
}
|
|
1097
1098
|
case "qdrant": {
|
|
1098
|
-
const { QdrantProvider } = await import("./QdrantProvider-
|
|
1099
|
+
const { QdrantProvider } = await import("./QdrantProvider-YNUNEOZH.mjs");
|
|
1099
1100
|
return QdrantProvider;
|
|
1100
1101
|
}
|
|
1101
1102
|
case "chromadb": {
|
|
1102
|
-
const { ChromaDBProvider } = await import("./ChromaDBProvider-
|
|
1103
|
+
const { ChromaDBProvider } = await import("./ChromaDBProvider-MIDOR4FW.mjs");
|
|
1103
1104
|
return ChromaDBProvider;
|
|
1104
1105
|
}
|
|
1105
1106
|
case "redis": {
|
|
1106
|
-
const { RedisProvider } = await import("./RedisProvider-
|
|
1107
|
+
const { RedisProvider } = await import("./RedisProvider-SR65SCKV.mjs");
|
|
1107
1108
|
return RedisProvider;
|
|
1108
1109
|
}
|
|
1109
1110
|
case "weaviate": {
|
|
1110
|
-
const { WeaviateProvider } = await import("./WeaviateProvider-
|
|
1111
|
+
const { WeaviateProvider } = await import("./WeaviateProvider-5FWDFITI.mjs");
|
|
1111
1112
|
return WeaviateProvider;
|
|
1112
1113
|
}
|
|
1113
1114
|
case "universal_rest":
|
|
1114
1115
|
case "rest": {
|
|
1115
|
-
const { UniversalVectorProvider } = await import("./UniversalVectorProvider-
|
|
1116
|
+
const { UniversalVectorProvider } = await import("./UniversalVectorProvider-IN67OS56.mjs");
|
|
1116
1117
|
return UniversalVectorProvider;
|
|
1117
1118
|
}
|
|
1118
1119
|
default:
|
|
@@ -1130,7 +1131,7 @@ var ProviderRegistry = class {
|
|
|
1130
1131
|
}
|
|
1131
1132
|
switch (provider) {
|
|
1132
1133
|
case "simple": {
|
|
1133
|
-
const { SimpleGraphProvider } = await import("./SimpleGraphProvider-
|
|
1134
|
+
const { SimpleGraphProvider } = await import("./SimpleGraphProvider-SLOXO4M7.mjs");
|
|
1134
1135
|
return new SimpleGraphProvider(config);
|
|
1135
1136
|
}
|
|
1136
1137
|
default:
|
|
@@ -1393,6 +1394,9 @@ Extract entities and relationships from the following text.
|
|
|
1393
1394
|
Format the output as JSON with two keys: "nodes" (array of {id, label, properties}) and "edges" (array of {source, target, type, properties}).
|
|
1394
1395
|
Use the same ID for the same entity.
|
|
1395
1396
|
|
|
1397
|
+
IMPORTANT: Ensure all property values are valid JSON types (strings, numbers, booleans, or null).
|
|
1398
|
+
DO NOT include mathematical expressions like "4.5/5" as numbers; use strings instead.
|
|
1399
|
+
|
|
1396
1400
|
Text:
|
|
1397
1401
|
"${text}"
|
|
1398
1402
|
|
|
@@ -1973,6 +1977,7 @@ var Pipeline = class {
|
|
|
1973
1977
|
async initialize() {
|
|
1974
1978
|
var _a;
|
|
1975
1979
|
if (this.initialised) return;
|
|
1980
|
+
console.log(`[Pipeline] Initializing with provider: ${this.config.vectorDb.provider}...`);
|
|
1976
1981
|
this.vectorDB = await ProviderRegistry.createVectorProvider(this.config.vectorDb);
|
|
1977
1982
|
const { llmProvider, embeddingProvider } = await EmbeddingStrategyResolver.resolve(
|
|
1978
1983
|
this.config.llm,
|
|
@@ -2357,29 +2362,9 @@ var ProviderHealthCheck = class {
|
|
|
2357
2362
|
|
|
2358
2363
|
// src/core/VectorPlugin.ts
|
|
2359
2364
|
var VectorPlugin = class {
|
|
2360
|
-
/**
|
|
2361
|
-
* Initializes the plugin with the host configuration.
|
|
2362
|
-
* @param hostConfig - Configuration object passed from the host application.
|
|
2363
|
-
* @throws Error if configuration is invalid or providers are unhealthy
|
|
2364
|
-
*
|
|
2365
|
-
* @example
|
|
2366
|
-
* const plugin = new VectorPlugin({
|
|
2367
|
-
* projectId: 'my-app',
|
|
2368
|
-
* vectorDb: {
|
|
2369
|
-
* provider: 'pinecone',
|
|
2370
|
-
* indexName: 'my-index',
|
|
2371
|
-
* options: { apiKey: process.env.PINECONE_API_KEY }
|
|
2372
|
-
* },
|
|
2373
|
-
* llm: {
|
|
2374
|
-
* provider: 'openai',
|
|
2375
|
-
* model: 'gpt-4o',
|
|
2376
|
-
* apiKey: process.env.OPENAI_API_KEY
|
|
2377
|
-
* }
|
|
2378
|
-
* });
|
|
2379
|
-
*/
|
|
2380
2365
|
constructor(hostConfig) {
|
|
2381
2366
|
this.config = ConfigResolver.resolve(hostConfig);
|
|
2382
|
-
ConfigValidator.validateAndThrow(this.config);
|
|
2367
|
+
this.validationPromise = ConfigValidator.validateAndThrow(this.config);
|
|
2383
2368
|
this.pipeline = new Pipeline(this.config);
|
|
2384
2369
|
}
|
|
2385
2370
|
/**
|
|
@@ -2405,12 +2390,23 @@ var VectorPlugin = class {
|
|
|
2405
2390
|
* Run a chat query.
|
|
2406
2391
|
*/
|
|
2407
2392
|
async chat(message, history = [], namespace) {
|
|
2393
|
+
await this.validationPromise;
|
|
2408
2394
|
return this.pipeline.ask(message, history, namespace);
|
|
2409
2395
|
}
|
|
2396
|
+
/**
|
|
2397
|
+
* Run a streaming chat query.
|
|
2398
|
+
*/
|
|
2399
|
+
chatStream(_0) {
|
|
2400
|
+
return __asyncGenerator(this, arguments, function* (message, history = [], namespace) {
|
|
2401
|
+
yield new __await(this.validationPromise);
|
|
2402
|
+
yield* __yieldStar(this.pipeline.askStream(message, history, namespace));
|
|
2403
|
+
});
|
|
2404
|
+
}
|
|
2410
2405
|
/**
|
|
2411
2406
|
* Ingest documents into the vector database.
|
|
2412
2407
|
*/
|
|
2413
2408
|
async ingest(documents, namespace) {
|
|
2409
|
+
await this.validationPromise;
|
|
2414
2410
|
return this.pipeline.ingest(documents, namespace);
|
|
2415
2411
|
}
|
|
2416
2412
|
};
|
|
@@ -2492,6 +2488,65 @@ function createChatHandler(config) {
|
|
|
2492
2488
|
}
|
|
2493
2489
|
};
|
|
2494
2490
|
}
|
|
2491
|
+
function createStreamHandler(config) {
|
|
2492
|
+
const plugin = new VectorPlugin(config);
|
|
2493
|
+
return async function POST(req) {
|
|
2494
|
+
try {
|
|
2495
|
+
const body = await req.json();
|
|
2496
|
+
const { message, history = [], namespace } = body;
|
|
2497
|
+
const encoder = new TextEncoder();
|
|
2498
|
+
const stream = new ReadableStream({
|
|
2499
|
+
async start(controller) {
|
|
2500
|
+
try {
|
|
2501
|
+
const pipelineStream = plugin.chatStream(message, history, namespace);
|
|
2502
|
+
try {
|
|
2503
|
+
for (var iter = __forAwait(pipelineStream), more, temp, error; more = !(temp = await iter.next()).done; more = false) {
|
|
2504
|
+
const chunk = temp.value;
|
|
2505
|
+
if (typeof chunk === "string") {
|
|
2506
|
+
controller.enqueue(encoder.encode(chunk));
|
|
2507
|
+
} else {
|
|
2508
|
+
controller.enqueue(encoder.encode(`
|
|
2509
|
+
|
|
2510
|
+
__METADATA__${JSON.stringify(chunk)}`));
|
|
2511
|
+
}
|
|
2512
|
+
}
|
|
2513
|
+
} catch (temp) {
|
|
2514
|
+
error = [temp];
|
|
2515
|
+
} finally {
|
|
2516
|
+
try {
|
|
2517
|
+
more && (temp = iter.return) && await temp.call(iter);
|
|
2518
|
+
} finally {
|
|
2519
|
+
if (error)
|
|
2520
|
+
throw error[0];
|
|
2521
|
+
}
|
|
2522
|
+
}
|
|
2523
|
+
controller.close();
|
|
2524
|
+
} catch (streamError) {
|
|
2525
|
+
console.error("[createStreamHandler] Stream processing error:", streamError);
|
|
2526
|
+
const errorMessage = streamError instanceof Error ? streamError.message : String(streamError);
|
|
2527
|
+
controller.enqueue(encoder.encode(`
|
|
2528
|
+
|
|
2529
|
+
__ERROR__${JSON.stringify({ error: errorMessage })}`));
|
|
2530
|
+
controller.close();
|
|
2531
|
+
}
|
|
2532
|
+
}
|
|
2533
|
+
});
|
|
2534
|
+
return new Response(stream, {
|
|
2535
|
+
headers: {
|
|
2536
|
+
"Content-Type": "text/event-stream",
|
|
2537
|
+
"Cache-Control": "no-cache",
|
|
2538
|
+
"Connection": "keep-alive"
|
|
2539
|
+
}
|
|
2540
|
+
});
|
|
2541
|
+
} catch (err) {
|
|
2542
|
+
const message = err instanceof Error ? err.message : "Internal server error";
|
|
2543
|
+
return new Response(JSON.stringify({ error: message }), {
|
|
2544
|
+
status: 500,
|
|
2545
|
+
headers: { "Content-Type": "application/json" }
|
|
2546
|
+
});
|
|
2547
|
+
}
|
|
2548
|
+
};
|
|
2549
|
+
}
|
|
2495
2550
|
function createIngestHandler(config) {
|
|
2496
2551
|
const plugin = new VectorPlugin(config);
|
|
2497
2552
|
return async function POST(req) {
|
|
@@ -2581,6 +2636,7 @@ export {
|
|
|
2581
2636
|
VectorPlugin,
|
|
2582
2637
|
DocumentParser,
|
|
2583
2638
|
createChatHandler,
|
|
2639
|
+
createStreamHandler,
|
|
2584
2640
|
createIngestHandler,
|
|
2585
2641
|
createHealthHandler,
|
|
2586
2642
|
createUploadHandler
|
|
@@ -5,6 +5,9 @@ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
6
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
7
|
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
8
|
+
var __typeError = (msg) => {
|
|
9
|
+
throw TypeError(msg);
|
|
10
|
+
};
|
|
8
11
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
12
|
var __spreadValues = (a, b) => {
|
|
10
13
|
for (var prop in b || (b = {}))
|
|
@@ -45,6 +48,34 @@ var __asyncGenerator = (__this, __arguments, generator) => {
|
|
|
45
48
|
}, method = (k, call, wait, clear) => it[k] = (x) => (call = new Promise((yes, no, run) => (run = () => resume(k, x, yes, no), q ? q.then(run) : run())), clear = () => q === wait && (q = 0), q = wait = call.then(clear, clear), call), q, it = {};
|
|
46
49
|
return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
|
|
47
50
|
};
|
|
51
|
+
var __yieldStar = (value) => {
|
|
52
|
+
var obj = value[__knownSymbol("asyncIterator")], isAwait = false, method, it = {};
|
|
53
|
+
if (obj == null) {
|
|
54
|
+
obj = value[__knownSymbol("iterator")]();
|
|
55
|
+
method = (k) => it[k] = (x) => obj[k](x);
|
|
56
|
+
} else {
|
|
57
|
+
obj = obj.call(value);
|
|
58
|
+
method = (k) => it[k] = (v) => {
|
|
59
|
+
if (isAwait) {
|
|
60
|
+
isAwait = false;
|
|
61
|
+
if (k === "throw") throw v;
|
|
62
|
+
return v;
|
|
63
|
+
}
|
|
64
|
+
isAwait = true;
|
|
65
|
+
return {
|
|
66
|
+
done: false,
|
|
67
|
+
value: new __await(new Promise((resolve) => {
|
|
68
|
+
var x = obj[k](v);
|
|
69
|
+
if (!(x instanceof Object)) __typeError("Object expected");
|
|
70
|
+
resolve(x);
|
|
71
|
+
}), 1)
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return it[__knownSymbol("iterator")] = () => it, method("next"), "throw" in obj ? method("throw") : it.throw = (x) => {
|
|
76
|
+
throw x;
|
|
77
|
+
}, "return" in obj && method("return"), it;
|
|
78
|
+
};
|
|
48
79
|
var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it);
|
|
49
80
|
|
|
50
81
|
export {
|
|
@@ -53,5 +84,6 @@ export {
|
|
|
53
84
|
__objRest,
|
|
54
85
|
__await,
|
|
55
86
|
__asyncGenerator,
|
|
87
|
+
__yieldStar,
|
|
56
88
|
__forAwait
|
|
57
89
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import '../RagConfig-DRJO4hGU.mjs';
|
|
2
|
-
export { c as createChatHandler, b as createHealthHandler, d as createIngestHandler, e as createUploadHandler } from '../index-
|
|
2
|
+
export { c as createChatHandler, b as createHealthHandler, d as createIngestHandler, f as createStreamHandler, e as createUploadHandler } from '../index-Bjy0es5a.mjs';
|
|
3
3
|
import 'next/server';
|
package/dist/handlers/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import '../RagConfig-DRJO4hGU.js';
|
|
2
|
-
export { c as createChatHandler, b as createHealthHandler, d as createIngestHandler, e as createUploadHandler } from '../index-
|
|
2
|
+
export { c as createChatHandler, b as createHealthHandler, d as createIngestHandler, f as createStreamHandler, e as createUploadHandler } from '../index-B2mutkgp.js';
|
|
3
3
|
import 'next/server';
|