@absolutejs/rag 0.16.0 → 0.17.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.
@@ -52,10 +52,12 @@ var __require = import.meta.require;
52
52
  import { chromium } from "playwright-core";
53
53
 
54
54
  // src/web/transport.ts
55
+ import {
56
+ isPublicNetworkAddress,
57
+ pinnedPublicRequest
58
+ } from "@absolutejs/egress/transport";
55
59
  import { lookup } from "dns/promises";
56
60
  import { isIP } from "net";
57
- import { request as httpRequest } from "http";
58
- import { request as httpsRequest } from "https";
59
61
  import { brotliDecompressSync, gunzipSync, inflateSync } from "zlib";
60
62
 
61
63
  class WebReadError extends Error {
@@ -66,14 +68,7 @@ class WebReadError extends Error {
66
68
  this.name = "WebReadError";
67
69
  }
68
70
  }
69
- var isPublicWebAddress = (address) => {
70
- if (isIP(address) === 4) {
71
- const [a = 0, b = 0, c = 0] = address.split(".").map(Number);
72
- return !(a === 0 || a === 10 || a === 127 || a >= 224 || a === 100 && b >= 64 && b <= 127 || a === 169 && b === 254 || a === 172 && b >= 16 && b <= 31 || a === 192 && (b === 168 || b === 0 || b === 88 && c === 99) || a === 198 && (b === 18 || b === 19 || b === 51 && c === 100) || a === 203 && b === 0 && c === 113);
73
- }
74
- const value = address.toLowerCase();
75
- return isIP(value) === 6 && /^[23]/u.test(value) && !/^2001:(?:db8|0):/u.test(value) && !value.startsWith("2002:");
76
- };
71
+ var isPublicWebAddress = (address) => isPublicNetworkAddress(address);
77
72
  var validatePublicWebUrl = (raw) => {
78
73
  let url;
79
74
  try {
@@ -103,74 +98,38 @@ var fetchPublicWebResource = async (raw, options = {}) => {
103
98
  throw new WebReadError("blocked_url", "The destination resolved to a private or reserved network.");
104
99
  signal.throwIfAborted();
105
100
  const selected = addresses.find(({ family }) => family === 4) ?? addresses[0];
106
- const response = await new Promise((resolve, reject) => {
107
- const request = url.protocol === "https:" ? httpsRequest : httpRequest;
108
- const req = request({
109
- protocol: url.protocol,
110
- hostname: selected.address,
111
- family: selected.family,
112
- servername: isIP(host) ? undefined : host,
113
- port: url.port || undefined,
114
- path: url.pathname + url.search,
115
- method,
116
- signal,
117
- agent: false,
118
- headers: {
119
- "user-agent": "onSparkReader/1.0 (+https://onspark.com)",
120
- accept: "*/*",
121
- "accept-encoding": "identity",
122
- ...options.headers,
123
- host: url.host
124
- }
125
- }, (res) => {
126
- const chunks = [];
127
- let bytes = 0;
128
- res.on("error", reject);
129
- res.on("data", (chunk) => {
130
- bytes += chunk.length;
131
- if (bytes > maxBytes) {
132
- const error = new WebReadError("too_large", "The response exceeded the website read limit.");
133
- res.destroy(error);
134
- reject(error);
135
- } else
136
- chunks.push(chunk);
137
- });
138
- res.on("end", () => {
139
- try {
140
- let data = Buffer.concat(chunks);
141
- const encoding = res.headers["content-encoding"];
142
- const limits = { maxOutputLength: maxBytes };
143
- if (encoding === "gzip")
144
- data = gunzipSync(data, limits);
145
- else if (encoding === "br")
146
- data = brotliDecompressSync(data, limits);
147
- else if (encoding === "deflate")
148
- data = inflateSync(data, limits);
149
- const headers = Object.fromEntries(Object.entries(res.headers).filter(([key]) => ![
150
- "content-encoding",
151
- "content-length",
152
- "transfer-encoding",
153
- "set-cookie"
154
- ].includes(key)).map(([key, value]) => [
155
- key,
156
- Array.isArray(value) ? value.join(", ") : value ?? ""
157
- ]));
158
- resolve({
159
- url: url.href,
160
- status: res.statusCode ?? 502,
161
- headers,
162
- body: data
163
- });
164
- } catch (error) {
165
- reject(error);
166
- }
167
- });
168
- });
169
- req.on("error", reject);
170
- if (body)
171
- req.write(body);
172
- req.end();
173
- });
101
+ const incoming = await pinnedPublicRequest(new Request(url, {
102
+ method,
103
+ body,
104
+ signal,
105
+ headers: {
106
+ "user-agent": "AbsoluteJSReader/1.0",
107
+ accept: "*/*",
108
+ "accept-encoding": "identity",
109
+ ...options.headers,
110
+ host: url.host
111
+ }
112
+ }), { hostname: host, address: selected.address, maxResponseBytes: maxBytes });
113
+ let data = new Uint8Array(await incoming.arrayBuffer());
114
+ const encoding = incoming.headers.get("content-encoding");
115
+ const limits = { maxOutputLength: maxBytes };
116
+ if (encoding === "gzip")
117
+ data = gunzipSync(data, limits);
118
+ else if (encoding === "br")
119
+ data = brotliDecompressSync(data, limits);
120
+ else if (encoding === "deflate")
121
+ data = inflateSync(data, limits);
122
+ const response = {
123
+ url: url.href,
124
+ status: incoming.status,
125
+ headers: Object.fromEntries([...incoming.headers].filter(([key]) => ![
126
+ "content-encoding",
127
+ "content-length",
128
+ "transfer-encoding",
129
+ "set-cookie"
130
+ ].includes(key))),
131
+ body: data
132
+ };
174
133
  if (options.redirect === "manual")
175
134
  return response;
176
135
  if ([301, 302, 303, 307, 308].includes(response.status) && response.headers.location) {
@@ -338,5 +297,5 @@ export {
338
297
  createPlaywrightWebRenderer
339
298
  };
340
299
 
341
- //# debugId=2A7174EB0083A97264756E2164756E21
300
+ //# debugId=A2C10691D4D6902764756E2164756E21
342
301
  //# sourceMappingURL=playwright.js.map
@@ -3,9 +3,9 @@
3
3
  "sources": ["../src/web/playwright.ts", "../src/web/transport.ts"],
4
4
  "sourcesContent": [
5
5
  "import { chromium, type Browser } from \"playwright-core\";\nimport {\n fetchPublicWebResource,\n validatePublicWebUrl,\n WebReadError,\n} from \"./transport\";\nimport type { WebRedirect } from \"./transport\";\nimport type { WebRenderer } from \"./index\";\n/** Fresh contexts share a browser, never cookies; all HTTP traffic uses pinned public DNS. */\nexport const createPlaywrightWebRenderer = (\n options: { executablePath?: string } = {},\n) => {\n let browser: Browser | undefined;\n let launching: Promise<Browser> | undefined;\n const launch = async () => {\n if (browser?.isConnected()) return browser;\n launching ??= chromium.launch({\n headless: true,\n executablePath: options.executablePath,\n args: [\"--disable-dev-shm-usage\"],\n });\n try {\n browser = await launching;\n return browser;\n } finally {\n launching = undefined;\n }\n };\n const renderOnce: WebRenderer = async (url, { signal }) => {\n validatePublicWebUrl(url);\n signal.throwIfAborted();\n const instance = await launch();\n const context = await instance.newContext({\n serviceWorkers: \"block\",\n acceptDownloads: false,\n });\n const abort = () => {\n void context.close().catch(() => {});\n };\n signal.addEventListener(\"abort\", abort, { once: true });\n const redirects: WebRedirect[] = [];\n let count = 0,\n bytes = 0;\n try {\n await context.routeWebSocket(\"**/*\", (socket) => socket.close());\n await context.route(\"**/*\", async (route) => {\n const request = route.request();\n try {\n if (\n ++count > 80 ||\n bytes > 20_000_000 ||\n [\"image\", \"media\", \"font\"].includes(request.resourceType())\n )\n return await route.abort();\n const body = request.postData() ?? undefined;\n if (body && body.length > 100_000) return await route.abort();\n const original = request.headers();\n const headers: Record<string, string> = {};\n for (const key of [\"accept\", \"content-type\", \"origin\", \"user-agent\"])\n if (original[key]) headers[key] = original[key];\n const response = await fetchPublicWebResource(request.url(), {\n signal,\n maxBytes: 5_000_000,\n method: request.method(),\n body,\n headers,\n redirect: \"manual\",\n });\n if (\n request.isNavigationRequest() &&\n request.frame() === context.pages()[0]?.mainFrame() &&\n [301, 302, 303, 307, 308].includes(response.status) &&\n response.headers.location\n ) {\n redirects.push({\n from: request.url(),\n to: new URL(response.headers.location, request.url()).href,\n kind: \"http\",\n status: response.status,\n });\n }\n bytes += response.body.byteLength;\n await route.fulfill({\n status: response.status,\n headers: response.headers,\n body: Buffer.from(response.body),\n });\n } catch {\n await route.abort().catch(() => {});\n }\n });\n const page = await context.newPage();\n let previousUrl = url;\n page.on(\"framenavigated\", (frame) => {\n if (frame !== page.mainFrame() || !/^https?:/u.test(frame.url()))\n return;\n const next = frame.url();\n if (next !== previousUrl && !redirects.some((hop) => hop.to === next))\n redirects.push({ from: previousUrl, to: next, kind: \"client\" });\n previousUrl = next;\n });\n const response = await page.goto(url, {\n waitUntil: \"domcontentloaded\",\n timeout: 25000,\n });\n const settled = await page\n .waitForFunction(\n () => {\n const root = document.querySelector(\n \"#root,#app,#__next,app-root,[ng-version]\",\n );\n const rootText = root?.textContent?.trim() ?? \"\";\n return (\n document.body.innerText.trim().length > 100 &&\n (!root ||\n (rootText.length > 20 &&\n !/^(loading|please wait)/i.test(rootText)))\n );\n },\n undefined,\n { timeout: 8000 },\n )\n .then(\n () => true,\n () => false,\n );\n // Allow hydration and async content to settle after the first readable frame.\n await page.waitForTimeout(1200);\n // Bounded scrolling exposes common lazy-loaded sections without clicking actions.\n for (let step = 0; step < 3; step++) {\n await page.evaluate(() => window.scrollBy(0, window.innerHeight));\n await page.waitForTimeout(350);\n }\n await page.evaluate(() => {\n document.querySelectorAll(\"details\").forEach((element) => {\n element.open = true;\n });\n window.scrollTo(0, 0);\n });\n signal.throwIfAborted();\n const html = await page.content();\n if (html.length > 5_000_000)\n throw new WebReadError(\n \"too_large\",\n \"Rendered page exceeded the content limit.\",\n );\n return {\n html,\n redirects,\n settled,\n text: await page.locator(\"body\").innerText(),\n url: page.url(),\n status: response?.status() ?? 200,\n };\n } finally {\n signal.removeEventListener(\"abort\", abort);\n await context.close().catch(() => {});\n }\n };\n const render: WebRenderer = async (url, options) => {\n try {\n return await renderOnce(url, options);\n } catch (error) {\n if (options.signal.aborted || browser?.isConnected()) throw error;\n // A crashed worker may be replaced once; the same total deadline still applies.\n return renderOnce(url, options);\n }\n };\n return {\n render,\n ready: async () => {\n await launch();\n },\n close: async () => {\n await browser?.close();\n browser = undefined;\n },\n };\n};\n",
6
- "import { lookup } from \"node:dns/promises\";\nimport { isIP } from \"node:net\";\nimport { request as httpRequest } from \"node:http\";\nimport { request as httpsRequest } from \"node:https\";\nimport { brotliDecompressSync, gunzipSync, inflateSync } from \"node:zlib\";\n\nexport class WebReadError extends Error {\n constructor(\n public code: string,\n message: string,\n ) {\n super(message);\n this.name = \"WebReadError\";\n }\n}\nexport const isPublicWebAddress = (address: string) => {\n if (isIP(address) === 4) {\n const [a = 0, b = 0, c = 0] = address.split(\".\").map(Number);\n return !(\n a === 0 ||\n a === 10 ||\n a === 127 ||\n a >= 224 ||\n (a === 100 && b >= 64 && b <= 127) ||\n (a === 169 && b === 254) ||\n (a === 172 && b >= 16 && b <= 31) ||\n (a === 192 && (b === 168 || b === 0 || (b === 88 && c === 99))) ||\n (a === 198 && (b === 18 || b === 19 || (b === 51 && c === 100))) ||\n (a === 203 && b === 0 && c === 113)\n );\n }\n const value = address.toLowerCase();\n return (\n isIP(value) === 6 &&\n /^[23]/u.test(value) &&\n !/^2001:(?:db8|0):/u.test(value) &&\n !value.startsWith(\"2002:\")\n );\n};\nexport type WebRedirect = {\n from: string;\n to: string;\n kind: \"http\" | \"client\";\n status?: number;\n};\nexport type WebFetchResult = {\n redirects?: WebRedirect[];\n url: string;\n status: number;\n headers: Record<string, string>;\n body: Uint8Array;\n};\nexport type WebFetchOptions = {\n signal?: AbortSignal;\n redirect?: \"follow\" | \"manual\";\n maxBytes?: number;\n method?: string;\n body?: string;\n headers?: Record<string, string>;\n};\nexport const validatePublicWebUrl = (raw: string) => {\n let url: URL;\n try {\n url = new URL(raw);\n } catch {\n throw new WebReadError(\n \"invalid_url\",\n \"Provide a valid public HTTP or HTTPS URL.\",\n );\n }\n if (\n ![\"http:\", \"https:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n (url.port && ![\"80\", \"443\"].includes(url.port))\n )\n throw new WebReadError(\n \"blocked_url\",\n \"Only public HTTP/HTTPS URLs on standard ports are supported.\",\n );\n const host = url.hostname.replace(/^\\[|\\]$/gu, \"\").toLowerCase();\n if (\n host === \"localhost\" ||\n /\\.(?:localhost|local|internal)$/u.test(host) ||\n (isIP(host) && !isPublicWebAddress(host))\n )\n throw new WebReadError(\n \"blocked_url\",\n \"Private and local network destinations are not allowed.\",\n );\n return url;\n};\n/** Pin the validated DNS answer into the connection, including every redirect. */\nexport const fetchPublicWebResource = async (\n raw: string,\n options: WebFetchOptions = {},\n): Promise<WebFetchResult> => {\n const signal = options.signal ?? AbortSignal.timeout(15000);\n const maxBytes = options.maxBytes ?? 5_000_000;\n let url = validatePublicWebUrl(raw);\n const redirects: WebRedirect[] = [];\n let method = options.method ?? \"GET\";\n let body = options.body;\n for (let hop = 0; hop <= 5; hop++) {\n signal.throwIfAborted();\n const host = url.hostname.replace(/^\\[|\\]$/gu, \"\");\n const addresses = await lookup(host, { all: true });\n if (\n !addresses.length ||\n addresses.some(({ address }) => !isPublicWebAddress(address))\n )\n throw new WebReadError(\n \"blocked_url\",\n \"The destination resolved to a private or reserved network.\",\n );\n signal.throwIfAborted();\n const selected =\n addresses.find(({ family }) => family === 4) ?? addresses[0]!;\n const response = await new Promise<WebFetchResult>((resolve, reject) => {\n const request = url.protocol === \"https:\" ? httpsRequest : httpRequest;\n const req = request(\n {\n protocol: url.protocol,\n hostname: selected.address,\n family: selected.family,\n servername: isIP(host) ? undefined : host,\n port: url.port || undefined,\n path: url.pathname + url.search,\n method,\n signal,\n agent: false,\n headers: {\n \"user-agent\": \"onSparkReader/1.0 (+https://onspark.com)\",\n accept: \"*/*\",\n \"accept-encoding\": \"identity\",\n ...options.headers,\n host: url.host,\n },\n },\n (res) => {\n const chunks: Buffer[] = [];\n let bytes = 0;\n res.on(\"error\", reject);\n res.on(\"data\", (chunk: Buffer) => {\n bytes += chunk.length;\n if (bytes > maxBytes) {\n const error = new WebReadError(\n \"too_large\",\n \"The response exceeded the website read limit.\",\n );\n res.destroy(error);\n reject(error);\n } else chunks.push(chunk);\n });\n res.on(\"end\", () => {\n try {\n let data: Uint8Array = Buffer.concat(chunks);\n const encoding = res.headers[\"content-encoding\"];\n const limits = { maxOutputLength: maxBytes };\n if (encoding === \"gzip\") data = gunzipSync(data, limits);\n else if (encoding === \"br\")\n data = brotliDecompressSync(data, limits);\n else if (encoding === \"deflate\") data = inflateSync(data, limits);\n const headers = Object.fromEntries(\n Object.entries(res.headers)\n .filter(\n ([key]) =>\n ![\n \"content-encoding\",\n \"content-length\",\n \"transfer-encoding\",\n \"set-cookie\",\n ].includes(key),\n )\n .map(([key, value]) => [\n key,\n Array.isArray(value) ? value.join(\", \") : (value ?? \"\"),\n ]),\n );\n resolve({\n url: url.href,\n status: res.statusCode ?? 502,\n headers,\n body: data,\n });\n } catch (error) {\n reject(error);\n }\n });\n },\n );\n req.on(\"error\", reject);\n if (body) req.write(body);\n req.end();\n });\n if (options.redirect === \"manual\") return response;\n if (\n [301, 302, 303, 307, 308].includes(response.status) &&\n response.headers.location\n ) {\n const next = validatePublicWebUrl(\n new URL(response.headers.location, url).href,\n );\n redirects.push({\n from: url.href,\n to: next.href,\n kind: \"http\",\n status: response.status,\n });\n url = next;\n if (\n response.status === 303 ||\n ([301, 302].includes(response.status) && method === \"POST\")\n ) {\n method = \"GET\";\n body = undefined;\n }\n continue;\n }\n return { ...response, redirects };\n }\n throw new WebReadError(\n \"redirect_limit\",\n \"The site exceeded the redirect limit.\",\n );\n};\n"
6
+ "import {\n isPublicNetworkAddress,\n pinnedPublicRequest,\n} from \"@absolutejs/egress/transport\";\nimport { lookup } from \"node:dns/promises\";\nimport { isIP } from \"node:net\";\nimport { brotliDecompressSync, gunzipSync, inflateSync } from \"node:zlib\";\n\nexport class WebReadError extends Error {\n constructor(\n public code: string,\n message: string,\n ) {\n super(message);\n this.name = \"WebReadError\";\n }\n}\nexport const isPublicWebAddress = (address: string) =>\n isPublicNetworkAddress(address);\nexport type WebRedirect = {\n from: string;\n to: string;\n kind: \"http\" | \"client\";\n status?: number;\n};\nexport type WebFetchResult = {\n redirects?: WebRedirect[];\n url: string;\n status: number;\n headers: Record<string, string>;\n body: Uint8Array;\n};\nexport type WebFetchOptions = {\n signal?: AbortSignal;\n redirect?: \"follow\" | \"manual\";\n maxBytes?: number;\n method?: string;\n body?: string;\n headers?: Record<string, string>;\n};\nexport const validatePublicWebUrl = (raw: string) => {\n let url: URL;\n try {\n url = new URL(raw);\n } catch {\n throw new WebReadError(\n \"invalid_url\",\n \"Provide a valid public HTTP or HTTPS URL.\",\n );\n }\n if (\n ![\"http:\", \"https:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n (url.port && ![\"80\", \"443\"].includes(url.port))\n )\n throw new WebReadError(\n \"blocked_url\",\n \"Only public HTTP/HTTPS URLs on standard ports are supported.\",\n );\n const host = url.hostname.replace(/^\\[|\\]$/gu, \"\").toLowerCase();\n if (\n host === \"localhost\" ||\n /\\.(?:localhost|local|internal)$/u.test(host) ||\n (isIP(host) && !isPublicWebAddress(host))\n )\n throw new WebReadError(\n \"blocked_url\",\n \"Private and local network destinations are not allowed.\",\n );\n return url;\n};\n/** Pin the validated DNS answer into the connection, including every redirect. */\nexport const fetchPublicWebResource = async (\n raw: string,\n options: WebFetchOptions = {},\n): Promise<WebFetchResult> => {\n const signal = options.signal ?? AbortSignal.timeout(15000);\n const maxBytes = options.maxBytes ?? 5_000_000;\n let url = validatePublicWebUrl(raw);\n const redirects: WebRedirect[] = [];\n let method = options.method ?? \"GET\";\n let body = options.body;\n for (let hop = 0; hop <= 5; hop++) {\n signal.throwIfAborted();\n const host = url.hostname.replace(/^\\[|\\]$/gu, \"\");\n const addresses = await lookup(host, { all: true });\n if (\n !addresses.length ||\n addresses.some(({ address }) => !isPublicWebAddress(address))\n )\n throw new WebReadError(\n \"blocked_url\",\n \"The destination resolved to a private or reserved network.\",\n );\n signal.throwIfAborted();\n const selected =\n addresses.find(({ family }) => family === 4) ?? addresses[0]!;\n const incoming = await pinnedPublicRequest(\n new Request(url, {\n method,\n body,\n signal,\n headers: {\n \"user-agent\": \"AbsoluteJSReader/1.0\",\n accept: \"*/*\",\n \"accept-encoding\": \"identity\",\n ...options.headers,\n host: url.host,\n },\n }),\n { hostname: host, address: selected.address, maxResponseBytes: maxBytes },\n );\n let data: Uint8Array = new Uint8Array(await incoming.arrayBuffer());\n const encoding = incoming.headers.get(\"content-encoding\");\n const limits = { maxOutputLength: maxBytes };\n if (encoding === \"gzip\") data = gunzipSync(data, limits);\n else if (encoding === \"br\") data = brotliDecompressSync(data, limits);\n else if (encoding === \"deflate\") data = inflateSync(data, limits);\n const response: WebFetchResult = {\n url: url.href,\n status: incoming.status,\n headers: Object.fromEntries(\n [...incoming.headers].filter(\n ([key]) =>\n ![\n \"content-encoding\",\n \"content-length\",\n \"transfer-encoding\",\n \"set-cookie\",\n ].includes(key),\n ),\n ),\n body: data,\n };\n if (options.redirect === \"manual\") return response;\n if (\n [301, 302, 303, 307, 308].includes(response.status) &&\n response.headers.location\n ) {\n const next = validatePublicWebUrl(\n new URL(response.headers.location, url).href,\n );\n redirects.push({\n from: url.href,\n to: next.href,\n kind: \"http\",\n status: response.status,\n });\n url = next;\n if (\n response.status === 303 ||\n ([301, 302].includes(response.status) && method === \"POST\")\n ) {\n method = \"GET\";\n body = undefined;\n }\n continue;\n }\n return { ...response, redirects };\n }\n throw new WebReadError(\n \"redirect_limit\",\n \"The site exceeded the redirect limit.\",\n );\n};\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "2A7174EB0083A97264756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "A2C10691D4D6902764756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,184 +1,185 @@
1
1
  {
2
- "name": "@absolutejs/rag",
3
- "version": "0.16.0",
4
- "homepage": "https://github.com/absolutejs/rag",
5
- "bugs": {
6
- "url": "https://github.com/absolutejs/rag/issues"
7
- },
8
- "license": "BSL-1.1",
9
- "description": "Standalone RAG ingestion, sync, retrieval, evaluation, clients, and framework adapters extracted from AbsoluteJS",
10
- "type": "module",
11
- "main": "./dist/index.js",
12
- "types": "./dist/src/index.d.ts",
13
- "files": [
14
- "CHANGELOG.md",
15
- "README.md",
16
- "changelog.json",
17
- "dist"
18
- ],
19
- "exports": {
20
- ".": {
21
- "import": "./dist/index.js",
22
- "types": "./dist/src/index.d.ts"
23
- },
24
- "./adapter-kit": {
25
- "import": "./dist/adapter-kit/index.js",
26
- "types": "./dist/src/adapter-kit/index.d.ts"
27
- },
28
- "./client": {
29
- "import": "./dist/client/index.js",
30
- "types": "./dist/src/client/index.d.ts"
31
- },
32
- "./client/ui": {
33
- "import": "./dist/client/ui.js",
34
- "types": "./dist/src/client/ui.d.ts"
35
- },
36
- "./ui": {
37
- "import": "./dist/presentation/ui.js",
38
- "types": "./dist/src/presentation/ui.d.ts"
39
- },
40
- "./quality": {
41
- "import": "./dist/quality/quality.js",
42
- "types": "./dist/src/quality/quality.d.ts"
43
- },
44
- "./react": {
45
- "import": "./dist/react/index.js",
46
- "types": "./dist/src/react/index.d.ts"
47
- },
48
- "./vue": {
49
- "import": "./dist/vue/index.js",
50
- "types": "./dist/src/vue/index.d.ts"
51
- },
52
- "./svelte": {
53
- "import": "./dist/svelte/index.js",
54
- "types": "./dist/src/svelte/index.d.ts"
55
- },
56
- "./angular": {
57
- "import": "./dist/angular/index.js",
58
- "types": "./dist/src/angular/index.d.ts"
59
- },
60
- "./manifest": {
61
- "import": "./dist/manifest.js",
62
- "types": "./dist/src/manifest.d.ts"
63
- },
64
- "./manifest.json": "./dist/manifest.json",
65
- "./web": {
66
- "import": "./dist/web/index.js",
67
- "types": "./dist/src/web/index.d.ts"
68
- },
69
- "./web/playwright": {
70
- "import": "./dist/web/playwright.js",
71
- "types": "./dist/src/web/playwright.d.ts"
72
- }
73
- },
74
- "absolutejs": {
75
- "manifestContract": 2
76
- },
77
- "dependencies": {
78
- "@absolutejs/manifest": "^0.9.0",
79
- "@sinclair/typebox": "^0.34.0",
80
- "linkedom": "0.18.13",
81
- "pdfjs-dist": "6.3.289",
82
- "pdf-lib": "1.17.1"
83
- },
84
- "peerDependencies": {
85
- "@angular/core": "^21.0.0",
86
- "elysia": "^2.0.0-beta.6",
87
- "react": "^19.2.0",
88
- "svelte": "^5.35.2",
89
- "vue": "^3.5.27",
90
- "@absolutejs/sync": ">=2.14.0 <3",
91
- "@absolutejs/ai": ">=0.0.54 <0.3",
92
- "playwright-core": "^1.60.0"
93
- },
94
- "peerDependenciesMeta": {
95
- "@angular/core": {
96
- "optional": true
97
- },
98
- "react": {
99
- "optional": true
100
- },
101
- "svelte": {
102
- "optional": true
103
- },
104
- "vue": {
105
- "optional": true
106
- },
107
- "playwright-core": {
108
- "optional": true
109
- }
110
- },
111
- "devDependencies": {
112
- "@absolutejs/absolute": "0.20.0-beta.0",
113
- "@absolutejs/ai": "0.2.0",
114
- "@absolutejs/changelog": "^0.6.0",
115
- "@absolutejs/rag-postgres": "0.0.13",
116
- "@absolutejs/rag-sqlite": "0.0.11",
117
- "@absolutejs/sync": "2.14.0",
118
- "@angular/core": "21.2.6",
119
- "@eslint/js": "^10.0.1",
120
- "@types/bun": "1.3.14",
121
- "@types/react": "19.2.0",
122
- "elysia": "2.0.0-beta.6",
123
- "eslint": "^10.0.3",
124
- "eslint-plugin-absolute": "^0.2.6",
125
- "eslint-plugin-promise": "^7.2.1",
126
- "globals": "^17.4.0",
127
- "playwright-core": "1.60.0",
128
- "prettier": "^3.5.3",
129
- "react": "19.2.1",
130
- "react-dom": "19.2.1",
131
- "svelte": "5.55.0",
132
- "typescript": "5.9.3",
133
- "typescript-eslint": "^8.56.1",
134
- "vue": "3.5.27"
135
- },
136
- "scripts": {
137
- "build": "bun run scripts/build.ts && absolute-manifest emit",
138
- "config": "absolute config",
139
- "typecheck": "tsc --noEmit --project tsconfig.json",
140
- "lint": "eslint . --max-warnings 0",
141
- "format": "prettier --write .",
142
- "test": "bun test",
143
- "release": "bun run build && bun publish --access public",
144
- "check:package": "absolute-changelog check",
145
- "prepublishOnly": "bun run check:package"
146
- },
147
- "publishConfig": {
148
- "access": "public"
149
- },
150
- "typesVersions": {
151
- "*": {
152
- "adapter-kit": [
153
- "dist/src/adapter-kit/index.d.ts"
154
- ],
155
- "client": [
156
- "dist/src/client/index.d.ts"
157
- ],
158
- "client/ui": [
159
- "dist/src/client/ui.d.ts"
160
- ],
161
- "ui": [
162
- "dist/src/presentation/ui.d.ts"
163
- ],
164
- "quality": [
165
- "dist/src/quality/quality.d.ts"
166
- ],
167
- "react": [
168
- "dist/src/react/index.d.ts"
169
- ],
170
- "vue": [
171
- "dist/src/vue/index.d.ts"
172
- ],
173
- "svelte": [
174
- "dist/src/svelte/index.d.ts"
175
- ],
176
- "angular": [
177
- "dist/src/angular/index.d.ts"
178
- ],
179
- "manifest": [
180
- "dist/src/manifest.d.ts"
181
- ]
182
- }
183
- }
2
+ "name": "@absolutejs/rag",
3
+ "version": "0.17.0",
4
+ "homepage": "https://github.com/absolutejs/rag",
5
+ "bugs": {
6
+ "url": "https://github.com/absolutejs/rag/issues"
7
+ },
8
+ "license": "BSL-1.1",
9
+ "description": "Standalone RAG ingestion, sync, retrieval, evaluation, clients, and framework adapters extracted from AbsoluteJS",
10
+ "type": "module",
11
+ "main": "./dist/index.js",
12
+ "types": "./dist/src/index.d.ts",
13
+ "files": [
14
+ "CHANGELOG.md",
15
+ "README.md",
16
+ "changelog.json",
17
+ "dist"
18
+ ],
19
+ "exports": {
20
+ ".": {
21
+ "import": "./dist/index.js",
22
+ "types": "./dist/src/index.d.ts"
23
+ },
24
+ "./adapter-kit": {
25
+ "import": "./dist/adapter-kit/index.js",
26
+ "types": "./dist/src/adapter-kit/index.d.ts"
27
+ },
28
+ "./client": {
29
+ "import": "./dist/client/index.js",
30
+ "types": "./dist/src/client/index.d.ts"
31
+ },
32
+ "./client/ui": {
33
+ "import": "./dist/client/ui.js",
34
+ "types": "./dist/src/client/ui.d.ts"
35
+ },
36
+ "./ui": {
37
+ "import": "./dist/presentation/ui.js",
38
+ "types": "./dist/src/presentation/ui.d.ts"
39
+ },
40
+ "./quality": {
41
+ "import": "./dist/quality/quality.js",
42
+ "types": "./dist/src/quality/quality.d.ts"
43
+ },
44
+ "./react": {
45
+ "import": "./dist/react/index.js",
46
+ "types": "./dist/src/react/index.d.ts"
47
+ },
48
+ "./vue": {
49
+ "import": "./dist/vue/index.js",
50
+ "types": "./dist/src/vue/index.d.ts"
51
+ },
52
+ "./svelte": {
53
+ "import": "./dist/svelte/index.js",
54
+ "types": "./dist/src/svelte/index.d.ts"
55
+ },
56
+ "./angular": {
57
+ "import": "./dist/angular/index.js",
58
+ "types": "./dist/src/angular/index.d.ts"
59
+ },
60
+ "./manifest": {
61
+ "import": "./dist/manifest.js",
62
+ "types": "./dist/src/manifest.d.ts"
63
+ },
64
+ "./manifest.json": "./dist/manifest.json",
65
+ "./web": {
66
+ "import": "./dist/web/index.js",
67
+ "types": "./dist/src/web/index.d.ts"
68
+ },
69
+ "./web/playwright": {
70
+ "import": "./dist/web/playwright.js",
71
+ "types": "./dist/src/web/playwright.d.ts"
72
+ }
73
+ },
74
+ "absolutejs": {
75
+ "manifestContract": 2
76
+ },
77
+ "dependencies": {
78
+ "@absolutejs/manifest": "^0.9.0",
79
+ "@sinclair/typebox": "^0.34.0",
80
+ "linkedom": "0.18.13",
81
+ "pdfjs-dist": "6.3.289",
82
+ "pdf-lib": "1.17.1",
83
+ "@absolutejs/egress": "^0.3.0"
84
+ },
85
+ "peerDependencies": {
86
+ "@angular/core": "^21.0.0",
87
+ "elysia": "^2.0.0-beta.6",
88
+ "react": "^19.2.0",
89
+ "svelte": "^5.35.2",
90
+ "vue": "^3.5.27",
91
+ "@absolutejs/sync": ">=2.14.0 <3",
92
+ "@absolutejs/ai": ">=0.0.54 <0.3",
93
+ "playwright-core": "^1.60.0"
94
+ },
95
+ "peerDependenciesMeta": {
96
+ "@angular/core": {
97
+ "optional": true
98
+ },
99
+ "react": {
100
+ "optional": true
101
+ },
102
+ "svelte": {
103
+ "optional": true
104
+ },
105
+ "vue": {
106
+ "optional": true
107
+ },
108
+ "playwright-core": {
109
+ "optional": true
110
+ }
111
+ },
112
+ "devDependencies": {
113
+ "@absolutejs/absolute": "0.20.0-beta.0",
114
+ "@absolutejs/ai": "0.2.0",
115
+ "@absolutejs/changelog": "^0.6.0",
116
+ "@absolutejs/rag-postgres": "0.0.13",
117
+ "@absolutejs/rag-sqlite": "0.0.11",
118
+ "@absolutejs/sync": "2.14.0",
119
+ "@angular/core": "21.2.6",
120
+ "@eslint/js": "^10.0.1",
121
+ "@types/bun": "1.3.14",
122
+ "@types/react": "19.2.0",
123
+ "elysia": "2.0.0-beta.6",
124
+ "eslint": "^10.0.3",
125
+ "eslint-plugin-absolute": "^0.2.6",
126
+ "eslint-plugin-promise": "^7.2.1",
127
+ "globals": "^17.4.0",
128
+ "playwright-core": "1.60.0",
129
+ "prettier": "^3.5.3",
130
+ "react": "19.2.1",
131
+ "react-dom": "19.2.1",
132
+ "svelte": "5.55.0",
133
+ "typescript": "5.9.3",
134
+ "typescript-eslint": "^8.56.1",
135
+ "vue": "3.5.27"
136
+ },
137
+ "scripts": {
138
+ "build": "bun run scripts/build.ts && absolute-manifest emit",
139
+ "config": "absolute config",
140
+ "typecheck": "tsc --noEmit --project tsconfig.json",
141
+ "lint": "eslint . --max-warnings 0",
142
+ "format": "prettier --write .",
143
+ "test": "bun test",
144
+ "release": "bun run build && bun publish --access public",
145
+ "check:package": "absolute-changelog check",
146
+ "prepublishOnly": "bun run check:package"
147
+ },
148
+ "publishConfig": {
149
+ "access": "public"
150
+ },
151
+ "typesVersions": {
152
+ "*": {
153
+ "adapter-kit": [
154
+ "dist/src/adapter-kit/index.d.ts"
155
+ ],
156
+ "client": [
157
+ "dist/src/client/index.d.ts"
158
+ ],
159
+ "client/ui": [
160
+ "dist/src/client/ui.d.ts"
161
+ ],
162
+ "ui": [
163
+ "dist/src/presentation/ui.d.ts"
164
+ ],
165
+ "quality": [
166
+ "dist/src/quality/quality.d.ts"
167
+ ],
168
+ "react": [
169
+ "dist/src/react/index.d.ts"
170
+ ],
171
+ "vue": [
172
+ "dist/src/vue/index.d.ts"
173
+ ],
174
+ "svelte": [
175
+ "dist/src/svelte/index.d.ts"
176
+ ],
177
+ "angular": [
178
+ "dist/src/angular/index.d.ts"
179
+ ],
180
+ "manifest": [
181
+ "dist/src/manifest.d.ts"
182
+ ]
183
+ }
184
+ }
184
185
  }