@j0hanz/superfetch 1.2.0 → 1.2.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/README.md +18 -204
- package/dist/config/constants.d.ts +0 -1
- package/dist/config/constants.js +0 -1
- package/dist/config/formatting.d.ts +0 -1
- package/dist/config/formatting.d.ts.map +1 -1
- package/dist/config/formatting.js +1 -3
- package/dist/config/formatting.js.map +1 -1
- package/dist/config/index.d.ts +1 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -11
- package/dist/config/index.js.map +1 -1
- package/dist/config/types/content.d.ts +0 -1
- package/dist/config/types/content.js +0 -1
- package/dist/config/types/runtime.d.ts +0 -1
- package/dist/config/types/runtime.js +0 -1
- package/dist/config/types/tools.d.ts +0 -1
- package/dist/config/types/tools.js +0 -1
- package/dist/errors/app-error.d.ts +0 -1
- package/dist/errors/app-error.js +0 -1
- package/dist/http/auth.d.ts +0 -1
- package/dist/http/auth.js +0 -1
- package/dist/http/cors.d.ts +0 -1
- package/dist/http/cors.js +0 -1
- package/dist/http/download-routes.d.ts +1 -2
- package/dist/http/download-routes.d.ts.map +1 -1
- package/dist/http/download-routes.js +0 -1
- package/dist/http/mcp-routes.d.ts +0 -1
- package/dist/http/mcp-routes.js +0 -1
- package/dist/http/mcp-session-helpers.d.ts +0 -1
- package/dist/http/mcp-session-helpers.js +0 -1
- package/dist/http/mcp-session.d.ts +1 -2
- package/dist/http/mcp-session.d.ts.map +1 -1
- package/dist/http/mcp-session.js +0 -1
- package/dist/http/mcp-validation.d.ts +1 -2
- package/dist/http/mcp-validation.d.ts.map +1 -1
- package/dist/http/mcp-validation.js +6 -27
- package/dist/http/mcp-validation.js.map +1 -1
- package/dist/http/rate-limit.d.ts +1 -2
- package/dist/http/rate-limit.d.ts.map +1 -1
- package/dist/http/rate-limit.js +0 -1
- package/dist/http/rate-limit.js.map +1 -1
- package/dist/http/server-middleware.d.ts +0 -1
- package/dist/http/server-middleware.d.ts.map +1 -1
- package/dist/http/server-middleware.js +56 -1
- package/dist/http/server-middleware.js.map +1 -1
- package/dist/http/server.d.ts +0 -1
- package/dist/http/server.js +0 -1
- package/dist/http/session-cleanup.d.ts +0 -1
- package/dist/http/session-cleanup.js +0 -1
- package/dist/http/sessions.d.ts +1 -2
- package/dist/http/sessions.d.ts.map +1 -1
- package/dist/http/sessions.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/middleware/error-handler.d.ts +0 -1
- package/dist/middleware/error-handler.js +0 -1
- package/dist/resources/cached-content.d.ts +0 -1
- package/dist/resources/cached-content.js +0 -1
- package/dist/resources/index.d.ts +0 -1
- package/dist/resources/index.js +0 -1
- package/dist/server.d.ts +0 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -3
- package/dist/server.js.map +1 -1
- package/dist/services/cache.d.ts +1 -2
- package/dist/services/cache.d.ts.map +1 -1
- package/dist/services/cache.js +1 -2
- package/dist/services/context.d.ts +0 -1
- package/dist/services/context.js +0 -1
- package/dist/services/extractor.d.ts +1 -2
- package/dist/services/extractor.d.ts.map +1 -1
- package/dist/services/extractor.js +0 -1
- package/dist/services/fetcher/agents.d.ts +0 -1
- package/dist/services/fetcher/agents.js +0 -1
- package/dist/services/fetcher/errors.d.ts +0 -1
- package/dist/services/fetcher/errors.js +0 -1
- package/dist/services/fetcher/interceptors.d.ts +0 -1
- package/dist/services/fetcher/interceptors.js +0 -1
- package/dist/services/fetcher/redirects.d.ts +0 -1
- package/dist/services/fetcher/redirects.js +2 -3
- package/dist/services/fetcher/response.d.ts +0 -1
- package/dist/services/fetcher/response.js +4 -5
- package/dist/services/fetcher/retry-policy.d.ts +0 -1
- package/dist/services/fetcher/retry-policy.js +0 -1
- package/dist/services/fetcher.d.ts +1 -2
- package/dist/services/fetcher.d.ts.map +1 -1
- package/dist/services/fetcher.js +3 -4
- package/dist/services/fetcher.js.map +1 -1
- package/dist/services/logger.d.ts +1 -2
- package/dist/services/logger.d.ts.map +1 -1
- package/dist/services/logger.js +0 -1
- package/dist/services/parser.d.ts +1 -2
- package/dist/services/parser.d.ts.map +1 -1
- package/dist/services/parser.js +0 -1
- package/dist/tools/handlers/fetch-markdown.tool.d.ts +1 -2
- package/dist/tools/handlers/fetch-markdown.tool.d.ts.map +1 -1
- package/dist/tools/handlers/fetch-markdown.tool.js +34 -3
- package/dist/tools/handlers/fetch-markdown.tool.js.map +1 -1
- package/dist/tools/handlers/fetch-single.shared.d.ts +5 -3
- package/dist/tools/handlers/fetch-single.shared.d.ts.map +1 -1
- package/dist/tools/handlers/fetch-single.shared.js +8 -4
- package/dist/tools/handlers/fetch-single.shared.js.map +1 -1
- package/dist/tools/handlers/fetch-url.tool.d.ts +1 -2
- package/dist/tools/handlers/fetch-url.tool.d.ts.map +1 -1
- package/dist/tools/handlers/fetch-url.tool.js +36 -3
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.js +0 -1
- package/dist/tools/schemas.d.ts +29 -30
- package/dist/tools/schemas.js +0 -1
- package/dist/tools/utils/cache-vary.d.ts +0 -1
- package/dist/tools/utils/cache-vary.d.ts.map +1 -1
- package/dist/tools/utils/cache-vary.js +7 -25
- package/dist/tools/utils/cache-vary.js.map +1 -1
- package/dist/tools/utils/common.d.ts +2 -3
- package/dist/tools/utils/common.d.ts.map +1 -1
- package/dist/tools/utils/common.js +6 -7
- package/dist/tools/utils/common.js.map +1 -1
- package/dist/tools/utils/content-transform.d.ts +1 -3
- package/dist/tools/utils/content-transform.d.ts.map +1 -1
- package/dist/tools/utils/content-transform.js +42 -6
- package/dist/tools/utils/content-transform.js.map +1 -1
- package/dist/tools/utils/fetch-pipeline.d.ts +1 -2
- package/dist/tools/utils/fetch-pipeline.d.ts.map +1 -1
- package/dist/tools/utils/fetch-pipeline.js +11 -18
- package/dist/tools/utils/inline-content.d.ts +0 -1
- package/dist/tools/utils/inline-content.js +0 -1
- package/dist/transformers/jsonl.transformer.d.ts +1 -2
- package/dist/transformers/jsonl.transformer.d.ts.map +1 -1
- package/dist/transformers/jsonl.transformer.js +0 -1
- package/dist/transformers/jsonl.transformer.js.map +1 -1
- package/dist/transformers/markdown.transformer.d.ts +1 -2
- package/dist/transformers/markdown.transformer.d.ts.map +1 -1
- package/dist/transformers/markdown.transformer.js +8 -1
- package/dist/utils/code-language.d.ts +0 -1
- package/dist/utils/code-language.js +0 -1
- package/dist/utils/content-cleaner.d.ts +0 -1
- package/dist/utils/content-cleaner.js +0 -1
- package/dist/utils/crypto.d.ts +0 -1
- package/dist/utils/crypto.js +0 -1
- package/dist/utils/download-url.d.ts +1 -2
- package/dist/utils/download-url.d.ts.map +1 -1
- package/dist/utils/download-url.js +0 -1
- package/dist/utils/error-utils.d.ts +0 -1
- package/dist/utils/error-utils.js +1 -3
- package/dist/utils/filename-generator.d.ts +0 -1
- package/dist/utils/filename-generator.js +0 -1
- package/dist/utils/header-normalizer.d.ts +0 -1
- package/dist/utils/header-normalizer.js +0 -1
- package/dist/utils/html-truncator.d.ts +0 -1
- package/dist/utils/html-truncator.js +0 -1
- package/dist/utils/sanitizer.d.ts +0 -1
- package/dist/utils/sanitizer.js +0 -1
- package/dist/utils/tool-error-handler.d.ts +1 -2
- package/dist/utils/tool-error-handler.d.ts.map +1 -1
- package/dist/utils/tool-error-handler.js +0 -1
- package/dist/utils/url-validator.d.ts +1 -3
- package/dist/utils/url-validator.d.ts.map +1 -1
- package/dist/utils/url-validator.js +44 -10
- package/dist/utils/url-validator.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,13 +1,44 @@
|
|
|
1
|
+
import { config } from '../../config/index.js';
|
|
1
2
|
import { logDebug, logError } from '../../services/logger.js';
|
|
2
3
|
import { createToolErrorResponse, handleToolError, } from '../../utils/tool-error-handler.js';
|
|
3
4
|
import { transformHtmlToMarkdown } from '../utils/content-transform.js';
|
|
4
5
|
import { applyInlineResultToStructuredContent, buildToolContentBlocks, getFileDownloadInfo, getInlineErrorResponse, performSharedFetch, } from './fetch-single.shared.js';
|
|
5
6
|
export const FETCH_MARKDOWN_TOOL_NAME = 'fetch-markdown';
|
|
6
7
|
export const FETCH_MARKDOWN_TOOL_DESCRIPTION = 'Fetches a webpage and converts it to clean Markdown format with optional frontmatter and content length limits';
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return value !== null && typeof value === 'object';
|
|
10
|
+
}
|
|
11
|
+
function deserializeMarkdownPipelineResult(cached) {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(cached);
|
|
14
|
+
if (!isRecord(parsed))
|
|
15
|
+
return undefined;
|
|
16
|
+
const { content, markdown, title, truncated } = parsed;
|
|
17
|
+
if (typeof content !== 'string')
|
|
18
|
+
return undefined;
|
|
19
|
+
if (typeof markdown !== 'string')
|
|
20
|
+
return undefined;
|
|
21
|
+
if (title !== undefined && typeof title !== 'string')
|
|
22
|
+
return undefined;
|
|
23
|
+
if (truncated !== undefined && typeof truncated !== 'boolean') {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const resolvedTitle = typeof title === 'string' ? title : undefined;
|
|
27
|
+
return {
|
|
28
|
+
content,
|
|
29
|
+
markdown,
|
|
30
|
+
title: resolvedTitle,
|
|
31
|
+
truncated: truncated ?? false,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
7
38
|
function resolveMarkdownOptions(input) {
|
|
8
39
|
return {
|
|
9
|
-
extractMainContent: input.extractMainContent ??
|
|
10
|
-
includeMetadata: input.includeMetadata ??
|
|
40
|
+
extractMainContent: input.extractMainContent ?? config.extraction.extractMainContent,
|
|
41
|
+
includeMetadata: input.includeMetadata ?? config.extraction.includeMetadata,
|
|
11
42
|
maxContentLength: input.maxContentLength,
|
|
12
43
|
};
|
|
13
44
|
}
|
|
@@ -48,6 +79,7 @@ async function fetchMarkdownPipeline(url, input, options, transformOptions) {
|
|
|
48
79
|
retries: input.retries,
|
|
49
80
|
timeout: input.timeout,
|
|
50
81
|
transform: buildMarkdownTransform(transformOptions),
|
|
82
|
+
deserialize: deserializeMarkdownPipelineResult,
|
|
51
83
|
});
|
|
52
84
|
}
|
|
53
85
|
function buildMarkdownResponse(pipeline, inlineResult, fileDownload) {
|
|
@@ -87,4 +119,3 @@ async function executeFetchMarkdown(input) {
|
|
|
87
119
|
: null;
|
|
88
120
|
return buildMarkdownResponse(pipeline, inlineResult, fileDownload);
|
|
89
121
|
}
|
|
90
|
-
//# sourceMappingURL=fetch-markdown.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-markdown.tool.js","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-markdown.tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-markdown.tool.js","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-markdown.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PipelineResult, ToolContentBlock
|
|
2
|
-
import type { FileDownloadInfo } from '../../config/types.js';
|
|
1
|
+
import type { PipelineResult, ToolContentBlock } from '../../config/types/runtime.js';
|
|
2
|
+
import type { FileDownloadInfo, ToolResponseBase } from '../../config/types/tools.js';
|
|
3
3
|
import { applyInlineContentLimit } from '../utils/inline-content.js';
|
|
4
4
|
type SharedFetchFormat = 'jsonl' | 'markdown';
|
|
5
5
|
interface SharedFetchOptions<T extends {
|
|
@@ -10,10 +10,13 @@ interface SharedFetchOptions<T extends {
|
|
|
10
10
|
readonly extractMainContent: boolean;
|
|
11
11
|
readonly includeMetadata: boolean;
|
|
12
12
|
readonly maxContentLength?: number;
|
|
13
|
+
readonly cacheVariant?: string;
|
|
13
14
|
readonly customHeaders?: Record<string, string>;
|
|
14
15
|
readonly retries?: number;
|
|
15
16
|
readonly timeout?: number;
|
|
16
17
|
readonly transform: (html: string, normalizedUrl: string) => T;
|
|
18
|
+
readonly serialize?: (result: T) => string;
|
|
19
|
+
readonly deserialize?: (cached: string) => T | undefined;
|
|
17
20
|
}
|
|
18
21
|
export declare function performSharedFetch<T extends {
|
|
19
22
|
content: string;
|
|
@@ -32,4 +35,3 @@ export declare function getInlineErrorResponse(inlineResult: InlineResult, url:
|
|
|
32
35
|
export declare function applyInlineResultToStructuredContent(structuredContent: Record<string, unknown>, inlineResult: InlineResult, contentKey: string): void;
|
|
33
36
|
export declare function buildToolContentBlocks(structuredContent: Record<string, unknown>, fromCache: boolean, inlineResult: InlineResult, resourceName: string, cacheKey?: string | null, fullContent?: string, format?: SharedFetchFormat, url?: string, title?: string): ToolContentBlock[];
|
|
34
37
|
export {};
|
|
35
|
-
//# sourceMappingURL=fetch-single.shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-single.shared.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-single.shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,
|
|
1
|
+
{"version":3,"file":"fetch-single.shared.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-single.shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,KAAK,iBAAiB,GAAG,OAAO,GAAG,UAAU,CAAC;AAE9C,UAAU,kBAAkB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC,CAAC;CAChE;AAED,wBAAsB,kBAAkB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EACpE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC;IACT,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,YAAY,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;CAC1D,CAAC,CA8BD;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEtE,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,GACvB,gBAAgB,GAAG,IAAI,CAMzB;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,MAAM,GACV,gBAAgB,GAAG,IAAI,CAGzB;AAED,wBAAgB,oCAAoC,CAClD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,MAAM,GACjB,IAAI,CAaN;AAyDD,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,gBAAgB,EAAE,CA+BpB"}
|
|
@@ -12,6 +12,7 @@ export async function performSharedFetch(options) {
|
|
|
12
12
|
extractMainContent: options.extractMainContent,
|
|
13
13
|
includeMetadata: options.includeMetadata,
|
|
14
14
|
maxContentLength: options.maxContentLength,
|
|
15
|
+
...(options.cacheVariant ? { variant: options.cacheVariant } : {}),
|
|
15
16
|
...(options.format === 'markdown' ? {} : { contentBlocks: true }),
|
|
16
17
|
}, options.customHeaders);
|
|
17
18
|
const pipeline = await executeFetchPipeline({
|
|
@@ -22,6 +23,8 @@ export async function performSharedFetch(options) {
|
|
|
22
23
|
timeout: options.timeout,
|
|
23
24
|
cacheVary,
|
|
24
25
|
transform: options.transform,
|
|
26
|
+
serialize: options.serialize,
|
|
27
|
+
deserialize: options.deserialize,
|
|
25
28
|
});
|
|
26
29
|
const inlineResult = applyInlineContentLimit(pipeline.data.content, pipeline.cacheKey ?? null, options.format);
|
|
27
30
|
return { pipeline, inlineResult };
|
|
@@ -89,10 +92,12 @@ export function buildToolContentBlocks(structuredContent, fromCache, inlineResul
|
|
|
89
92
|
text: serializeStructuredContent(structuredContent, fromCache),
|
|
90
93
|
};
|
|
91
94
|
const blocks = [textBlock];
|
|
92
|
-
//
|
|
95
|
+
// Embed full content in stdio mode; HTTP mode relies on inline content or links.
|
|
93
96
|
const mimeType = format === 'markdown' ? 'text/markdown' : 'application/jsonl';
|
|
94
|
-
const contentToEmbed =
|
|
95
|
-
|
|
97
|
+
const contentToEmbed = config.runtime.httpMode
|
|
98
|
+
? inlineResult.content
|
|
99
|
+
: (fullContent ?? inlineResult.content);
|
|
100
|
+
if (typeof contentToEmbed === 'string' && url) {
|
|
96
101
|
const embeddedResource = buildEmbeddedResource(contentToEmbed, mimeType, url, title);
|
|
97
102
|
if (embeddedResource) {
|
|
98
103
|
blocks.push(embeddedResource);
|
|
@@ -105,4 +110,3 @@ export function buildToolContentBlocks(structuredContent, fromCache, inlineResul
|
|
|
105
110
|
}
|
|
106
111
|
return blocks;
|
|
107
112
|
}
|
|
108
|
-
//# sourceMappingURL=fetch-single.shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-single.shared.js","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-single.shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-single.shared.js","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-single.shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { FetchUrlInput, ToolResponseBase } from '../../config/types.js';
|
|
1
|
+
import type { FetchUrlInput, ToolResponseBase } from '../../config/types/tools.js';
|
|
2
2
|
export declare const FETCH_URL_TOOL_NAME = "fetch-url";
|
|
3
3
|
export declare const FETCH_URL_TOOL_DESCRIPTION = "Fetches a webpage and converts it to AI-readable JSONL format with semantic content blocks. Supports custom headers, retries, and content length limits.";
|
|
4
4
|
export declare function fetchUrlToolHandler(input: FetchUrlInput): Promise<ToolResponseBase>;
|
|
5
|
-
//# sourceMappingURL=fetch-url.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-url.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-url.tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-url.tool.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/fetch-url.tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AAqBrC,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,6JACqH,CAAC;AAoH7J,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAU3B"}
|
|
@@ -1,13 +1,45 @@
|
|
|
1
|
+
import { config } from '../../config/index.js';
|
|
1
2
|
import { logDebug, logError } from '../../services/logger.js';
|
|
2
3
|
import { createToolErrorResponse, handleToolError, } from '../../utils/tool-error-handler.js';
|
|
3
4
|
import { transformHtmlToJsonl, transformHtmlToMarkdownWithBlocks, } from '../utils/content-transform.js';
|
|
4
5
|
import { applyInlineResultToStructuredContent, buildToolContentBlocks, getInlineErrorResponse, performSharedFetch, } from './fetch-single.shared.js';
|
|
5
6
|
export const FETCH_URL_TOOL_NAME = 'fetch-url';
|
|
6
7
|
export const FETCH_URL_TOOL_DESCRIPTION = 'Fetches a webpage and converts it to AI-readable JSONL format with semantic content blocks. Supports custom headers, retries, and content length limits.';
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return value !== null && typeof value === 'object';
|
|
10
|
+
}
|
|
11
|
+
function deserializeJsonlTransformResult(cached) {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(cached);
|
|
14
|
+
if (!isRecord(parsed))
|
|
15
|
+
return undefined;
|
|
16
|
+
const { content, contentBlocks, title, truncated } = parsed;
|
|
17
|
+
if (typeof content !== 'string')
|
|
18
|
+
return undefined;
|
|
19
|
+
if (typeof contentBlocks !== 'number' || !Number.isFinite(contentBlocks)) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
if (title !== undefined && typeof title !== 'string')
|
|
23
|
+
return undefined;
|
|
24
|
+
if (truncated !== undefined && typeof truncated !== 'boolean') {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const resolvedTitle = typeof title === 'string' ? title : undefined;
|
|
28
|
+
return {
|
|
29
|
+
content,
|
|
30
|
+
contentBlocks,
|
|
31
|
+
title: resolvedTitle,
|
|
32
|
+
...(truncated !== undefined ? { truncated } : {}),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
7
39
|
function resolveFetchUrlOptions(input) {
|
|
8
40
|
return {
|
|
9
|
-
extractMainContent: input.extractMainContent ??
|
|
10
|
-
includeMetadata: input.includeMetadata ??
|
|
41
|
+
extractMainContent: input.extractMainContent ?? config.extraction.extractMainContent,
|
|
42
|
+
includeMetadata: input.includeMetadata ?? config.extraction.includeMetadata,
|
|
11
43
|
maxContentLength: input.maxContentLength,
|
|
12
44
|
format: input.format ?? 'jsonl',
|
|
13
45
|
};
|
|
@@ -54,7 +86,9 @@ async function fetchUrlPipeline(url, input, options) {
|
|
|
54
86
|
customHeaders: input.customHeaders,
|
|
55
87
|
retries: input.retries,
|
|
56
88
|
timeout: input.timeout,
|
|
89
|
+
cacheVariant: options.format === 'markdown' ? 'markdown-with-blocks' : undefined,
|
|
57
90
|
transform: buildFetchUrlTransform(options),
|
|
91
|
+
deserialize: deserializeJsonlTransformResult,
|
|
58
92
|
});
|
|
59
93
|
}
|
|
60
94
|
function buildFetchUrlResponse(pipeline, inlineResult, format) {
|
|
@@ -86,4 +120,3 @@ async function executeFetchUrl(input) {
|
|
|
86
120
|
return inlineError;
|
|
87
121
|
return buildFetchUrlResponse(pipeline, inlineResult, options.format);
|
|
88
122
|
}
|
|
89
|
-
//# sourceMappingURL=fetch-url.tool.js.map
|
package/dist/tools/index.d.ts
CHANGED
package/dist/tools/index.js
CHANGED
package/dist/tools/schemas.d.ts
CHANGED
|
@@ -15,20 +15,20 @@ export declare const fetchUrlInputSchema: z.ZodObject<{
|
|
|
15
15
|
url: string;
|
|
16
16
|
extractMainContent: boolean;
|
|
17
17
|
includeMetadata: boolean;
|
|
18
|
+
retries: number;
|
|
18
19
|
format: "jsonl" | "markdown";
|
|
19
20
|
timeout: number;
|
|
20
|
-
retries: number;
|
|
21
|
-
maxContentLength?: number | undefined;
|
|
22
21
|
customHeaders?: Record<string, string> | undefined;
|
|
22
|
+
maxContentLength?: number | undefined;
|
|
23
23
|
}, {
|
|
24
24
|
url: string;
|
|
25
|
+
customHeaders?: Record<string, string> | undefined;
|
|
25
26
|
extractMainContent?: boolean | undefined;
|
|
26
27
|
includeMetadata?: boolean | undefined;
|
|
27
|
-
|
|
28
|
+
retries?: number | undefined;
|
|
28
29
|
format?: "jsonl" | "markdown" | undefined;
|
|
29
|
-
|
|
30
|
+
maxContentLength?: number | undefined;
|
|
30
31
|
timeout?: number | undefined;
|
|
31
|
-
retries?: number | undefined;
|
|
32
32
|
}>;
|
|
33
33
|
export declare const fetchMarkdownInputSchema: z.ZodObject<{
|
|
34
34
|
customHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -44,18 +44,18 @@ export declare const fetchMarkdownInputSchema: z.ZodObject<{
|
|
|
44
44
|
url: string;
|
|
45
45
|
extractMainContent: boolean;
|
|
46
46
|
includeMetadata: boolean;
|
|
47
|
-
timeout: number;
|
|
48
47
|
retries: number;
|
|
49
|
-
|
|
48
|
+
timeout: number;
|
|
50
49
|
customHeaders?: Record<string, string> | undefined;
|
|
50
|
+
maxContentLength?: number | undefined;
|
|
51
51
|
}, {
|
|
52
52
|
url: string;
|
|
53
|
+
customHeaders?: Record<string, string> | undefined;
|
|
53
54
|
extractMainContent?: boolean | undefined;
|
|
54
55
|
includeMetadata?: boolean | undefined;
|
|
56
|
+
retries?: number | undefined;
|
|
55
57
|
maxContentLength?: number | undefined;
|
|
56
|
-
customHeaders?: Record<string, string> | undefined;
|
|
57
58
|
timeout?: number | undefined;
|
|
58
|
-
retries?: number | undefined;
|
|
59
59
|
}>;
|
|
60
60
|
export declare const fetchUrlOutputSchema: z.ZodObject<{
|
|
61
61
|
url: z.ZodString;
|
|
@@ -74,32 +74,32 @@ export declare const fetchUrlOutputSchema: z.ZodObject<{
|
|
|
74
74
|
errorCode: z.ZodOptional<z.ZodString>;
|
|
75
75
|
}, "strict", z.ZodTypeAny, {
|
|
76
76
|
url: string;
|
|
77
|
-
|
|
77
|
+
contentBlocks: number;
|
|
78
78
|
fetchedAt: string;
|
|
79
|
+
format: "jsonl" | "markdown";
|
|
79
80
|
cached: boolean;
|
|
80
|
-
contentBlocks: number;
|
|
81
81
|
error?: string | undefined;
|
|
82
82
|
content?: string | undefined;
|
|
83
|
-
errorCode?: string | undefined;
|
|
84
83
|
title?: string | undefined;
|
|
85
|
-
contentSize?: number | undefined;
|
|
86
84
|
truncated?: boolean | undefined;
|
|
87
85
|
resourceUri?: string | undefined;
|
|
88
86
|
resourceMimeType?: string | undefined;
|
|
87
|
+
contentSize?: number | undefined;
|
|
88
|
+
errorCode?: string | undefined;
|
|
89
89
|
}, {
|
|
90
90
|
url: string;
|
|
91
|
-
|
|
91
|
+
contentBlocks: number;
|
|
92
92
|
fetchedAt: string;
|
|
93
|
+
format: "jsonl" | "markdown";
|
|
93
94
|
cached: boolean;
|
|
94
|
-
contentBlocks: number;
|
|
95
95
|
error?: string | undefined;
|
|
96
96
|
content?: string | undefined;
|
|
97
|
-
errorCode?: string | undefined;
|
|
98
97
|
title?: string | undefined;
|
|
99
|
-
contentSize?: number | undefined;
|
|
100
98
|
truncated?: boolean | undefined;
|
|
101
99
|
resourceUri?: string | undefined;
|
|
102
100
|
resourceMimeType?: string | undefined;
|
|
101
|
+
contentSize?: number | undefined;
|
|
102
|
+
errorCode?: string | undefined;
|
|
103
103
|
}>;
|
|
104
104
|
export declare const fetchMarkdownOutputSchema: z.ZodObject<{
|
|
105
105
|
url: z.ZodString;
|
|
@@ -112,12 +112,12 @@ export declare const fetchMarkdownOutputSchema: z.ZodObject<{
|
|
|
112
112
|
expiresAt: z.ZodString;
|
|
113
113
|
}, "strip", z.ZodTypeAny, {
|
|
114
114
|
fileName: string;
|
|
115
|
-
downloadUrl: string;
|
|
116
115
|
expiresAt: string;
|
|
116
|
+
downloadUrl: string;
|
|
117
117
|
}, {
|
|
118
118
|
fileName: string;
|
|
119
|
-
downloadUrl: string;
|
|
120
119
|
expiresAt: string;
|
|
120
|
+
downloadUrl: string;
|
|
121
121
|
}>>;
|
|
122
122
|
} & {
|
|
123
123
|
contentSize: z.ZodOptional<z.ZodNumber>;
|
|
@@ -133,33 +133,32 @@ export declare const fetchMarkdownOutputSchema: z.ZodObject<{
|
|
|
133
133
|
cached: boolean;
|
|
134
134
|
error?: string | undefined;
|
|
135
135
|
markdown?: string | undefined;
|
|
136
|
-
errorCode?: string | undefined;
|
|
137
136
|
title?: string | undefined;
|
|
138
|
-
contentSize?: number | undefined;
|
|
139
137
|
truncated?: boolean | undefined;
|
|
138
|
+
resourceUri?: string | undefined;
|
|
139
|
+
resourceMimeType?: string | undefined;
|
|
140
|
+
contentSize?: number | undefined;
|
|
140
141
|
file?: {
|
|
141
142
|
fileName: string;
|
|
142
|
-
downloadUrl: string;
|
|
143
143
|
expiresAt: string;
|
|
144
|
+
downloadUrl: string;
|
|
144
145
|
} | undefined;
|
|
145
|
-
|
|
146
|
-
resourceMimeType?: string | undefined;
|
|
146
|
+
errorCode?: string | undefined;
|
|
147
147
|
}, {
|
|
148
148
|
url: string;
|
|
149
149
|
fetchedAt: string;
|
|
150
150
|
cached: boolean;
|
|
151
151
|
error?: string | undefined;
|
|
152
152
|
markdown?: string | undefined;
|
|
153
|
-
errorCode?: string | undefined;
|
|
154
153
|
title?: string | undefined;
|
|
155
|
-
contentSize?: number | undefined;
|
|
156
154
|
truncated?: boolean | undefined;
|
|
155
|
+
resourceUri?: string | undefined;
|
|
156
|
+
resourceMimeType?: string | undefined;
|
|
157
|
+
contentSize?: number | undefined;
|
|
157
158
|
file?: {
|
|
158
159
|
fileName: string;
|
|
159
|
-
downloadUrl: string;
|
|
160
160
|
expiresAt: string;
|
|
161
|
+
downloadUrl: string;
|
|
161
162
|
} | undefined;
|
|
162
|
-
|
|
163
|
-
resourceMimeType?: string | undefined;
|
|
163
|
+
errorCode?: string | undefined;
|
|
164
164
|
}>;
|
|
165
|
-
//# sourceMappingURL=schemas.d.ts.map
|
package/dist/tools/schemas.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-vary.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/cache-vary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-vary.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/cache-vary.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,EACvD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAY9C"}
|
|
@@ -1,30 +1,12 @@
|
|
|
1
1
|
import { config } from '../../config/index.js';
|
|
2
2
|
import { normalizeHeaderRecord } from '../../utils/header-normalizer.js';
|
|
3
|
-
function normalizeHeadersForCache(headers) {
|
|
4
|
-
return normalizeHeaderRecord(headers, config.security.blockedHeaders, {
|
|
5
|
-
trimValues: true,
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
3
|
export function appendHeaderVary(cacheVary, customHeaders) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
function mergeCacheVary(cacheVary, headerVary) {
|
|
13
|
-
if (!cacheVary && !headerVary)
|
|
14
|
-
return undefined;
|
|
15
|
-
if (typeof cacheVary === 'string') {
|
|
16
|
-
return buildStringVary(cacheVary, headerVary);
|
|
17
|
-
}
|
|
18
|
-
return mergeObjectVary(cacheVary, headerVary);
|
|
19
|
-
}
|
|
20
|
-
function mergeObjectVary(cacheVary, headerVary) {
|
|
21
|
-
if (!headerVary)
|
|
4
|
+
const headers = normalizeHeaderRecord(customHeaders, config.security.blockedHeaders, { trimValues: true });
|
|
5
|
+
if (!headers)
|
|
22
6
|
return cacheVary;
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return { key, headers: headerVary };
|
|
7
|
+
if (!cacheVary)
|
|
8
|
+
return { headers };
|
|
9
|
+
return typeof cacheVary === 'string'
|
|
10
|
+
? { key: cacheVary, headers }
|
|
11
|
+
: { ...cacheVary, headers };
|
|
29
12
|
}
|
|
30
|
-
//# sourceMappingURL=cache-vary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-vary.js","sourceRoot":"","sources":["../../../src/tools/utils/cache-vary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,
|
|
1
|
+
{"version":3,"file":"cache-vary.js","sourceRoot":"","sources":["../../../src/tools/utils/cache-vary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAC9B,SAAuD,EACvD,aAAsC;IAEtC,MAAM,OAAO,GAAG,qBAAqB,CACnC,aAAa,EACb,MAAM,CAAC,QAAQ,CAAC,cAAc,EAC9B,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;IAEF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACnC,OAAO,OAAO,SAAS,KAAK,QAAQ;QAClC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;QAC7B,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { ExtractedArticle, ExtractedMetadata, MetadataBlock
|
|
1
|
+
import type { ExtractedArticle, ExtractedMetadata, MetadataBlock } from '../../config/types/content.js';
|
|
2
|
+
import type { TruncationResult } from '../../config/types/runtime.js';
|
|
2
3
|
export declare function determineContentExtractionSource(extractMainContent: boolean, article: ExtractedArticle | null): article is ExtractedArticle;
|
|
3
4
|
export declare function createContentMetadataBlock(url: string, article: ExtractedArticle | null, extractedMeta: ExtractedMetadata, shouldExtractFromArticle: boolean, includeMetadata: boolean): MetadataBlock | undefined;
|
|
4
|
-
export declare function enforceContentLengthLimit(content: string, maxLength?: number): TruncationResult;
|
|
5
5
|
export declare function truncateContent(content: string, maxLength?: number, suffix?: string): TruncationResult;
|
|
6
|
-
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,wBAAgB,gCAAgC,CAC9C,kBAAkB,EAAE,OAAO,EAC3B,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAC/B,OAAO,IAAI,gBAAgB,CAE7B;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,gBAAgB,GAAG,IAAI,EAChC,aAAa,EAAE,iBAAiB,EAChC,wBAAwB,EAAE,OAAO,EACjC,eAAe,EAAE,OAAO,GACvB,aAAa,GAAG,SAAS,CAmB3B;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,SAAoB,GACzB,gBAAgB,CAYlB"}
|
|
@@ -23,17 +23,16 @@ export function createContentMetadataBlock(url, article, extractedMeta, shouldEx
|
|
|
23
23
|
fetchedAt: now,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
export function enforceContentLengthLimit(content, maxLength) {
|
|
27
|
-
return truncateContent(content, maxLength);
|
|
28
|
-
}
|
|
29
26
|
export function truncateContent(content, maxLength, suffix = TRUNCATION_MARKER) {
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
if (maxLength === undefined ||
|
|
28
|
+
maxLength <= 0 ||
|
|
29
|
+
content.length <= maxLength) {
|
|
32
30
|
return { content, truncated: false };
|
|
33
31
|
}
|
|
32
|
+
const safeMax = Math.max(0, maxLength - suffix.length);
|
|
33
|
+
const marker = suffix.length > maxLength ? suffix.substring(0, maxLength) : suffix;
|
|
34
34
|
return {
|
|
35
|
-
content: `${content.substring(0,
|
|
35
|
+
content: `${content.substring(0, safeMax)}${marker}`,
|
|
36
36
|
truncated: true,
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAQ/D,MAAM,UAAU,gCAAgC,CAC9C,kBAA2B,EAC3B,OAAgC;IAEhC,OAAO,kBAAkB,IAAI,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAW,EACX,OAAgC,EAChC,aAAgC,EAChC,wBAAiC,EACjC,eAAwB;IAExB,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,wBAAwB,IAAI,OAAO;QACxC,CAAC,CAAC;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG;YACH,SAAS,EAAE,GAAG;SACf;QACH,CAAC,CAAC;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,GAAG;YACH,SAAS,EAAE,GAAG;SACf,CAAC;AACR,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAQ/D,MAAM,UAAU,gCAAgC,CAC9C,kBAA2B,EAC3B,OAAgC;IAEhC,OAAO,kBAAkB,IAAI,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,GAAW,EACX,OAAgC,EAChC,aAAgC,EAChC,wBAAiC,EACjC,eAAwB;IAExB,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,wBAAwB,IAAI,OAAO;QACxC,CAAC,CAAC;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG;YACH,SAAS,EAAE,GAAG;SACf;QACH,CAAC,CAAC;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,GAAG;YACH,SAAS,EAAE,GAAG;SACf,CAAC;AACR,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,SAAkB,EAClB,MAAM,GAAG,iBAAiB;IAE1B,MAAM,cAAc,GAClB,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAEzE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,EAAE;QACtD,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JsonlTransformResult, MarkdownTransformResult } from '../../config/types.js';
|
|
1
|
+
import type { JsonlTransformResult, MarkdownTransformResult } from '../../config/types/content.js';
|
|
2
2
|
interface ExtractionOptions {
|
|
3
3
|
readonly extractMainContent: boolean;
|
|
4
4
|
readonly includeMetadata: boolean;
|
|
@@ -7,10 +7,8 @@ interface ContentLengthOptions {
|
|
|
7
7
|
readonly maxContentLength?: number;
|
|
8
8
|
}
|
|
9
9
|
interface MarkdownOptions extends ExtractionOptions, ContentLengthOptions {
|
|
10
|
-
readonly generateToc?: boolean;
|
|
11
10
|
}
|
|
12
11
|
export declare function transformHtmlToJsonl(html: string, url: string, options: ExtractionOptions & ContentLengthOptions): JsonlTransformResult;
|
|
13
12
|
export declare function transformHtmlToMarkdown(html: string, url: string, options: MarkdownOptions): MarkdownTransformResult;
|
|
14
13
|
export declare function transformHtmlToMarkdownWithBlocks(html: string, url: string, options: ExtractionOptions & ContentLengthOptions): JsonlTransformResult;
|
|
15
14
|
export {};
|
|
16
|
-
//# sourceMappingURL=content-transform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-transform.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/content-transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"content-transform.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/content-transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAcvC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAQD,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,UAAU,eAAgB,SAAQ,iBAAiB,EAAE,oBAAoB;CAAG;AA4D5E,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,GAChD,oBAAoB,CAatB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,GACvB,uBAAuB,CAYzB;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,GAChD,oBAAoB,CActB"}
|