@j0hanz/fetch-url-mcp 1.12.6 → 1.12.8

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.
Files changed (146) hide show
  1. package/dist/http/auth.d.ts +2 -2
  2. package/dist/http/auth.d.ts.map +1 -1
  3. package/dist/http/auth.js +15 -16
  4. package/dist/http/index.d.ts +6 -0
  5. package/dist/http/index.d.ts.map +1 -0
  6. package/dist/http/index.js +5 -0
  7. package/dist/http/native.d.ts +73 -0
  8. package/dist/http/native.d.ts.map +1 -1
  9. package/dist/http/native.js +585 -62
  10. package/dist/http/rate-limit.d.ts +1 -1
  11. package/dist/http/rate-limit.d.ts.map +1 -1
  12. package/dist/http/rate-limit.js +5 -6
  13. package/dist/index.d.ts +17 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +69 -8
  16. package/dist/lib/config.js +2 -2
  17. package/dist/lib/core.d.ts +56 -4
  18. package/dist/lib/core.d.ts.map +1 -1
  19. package/dist/lib/core.js +162 -11
  20. package/dist/lib/error/classes.d.ts +19 -0
  21. package/dist/lib/error/classes.d.ts.map +1 -0
  22. package/dist/lib/error/classes.js +107 -0
  23. package/dist/lib/error/classify.d.ts +4 -0
  24. package/dist/lib/error/classify.d.ts.map +1 -0
  25. package/dist/lib/error/classify.js +154 -0
  26. package/dist/lib/error/codes.d.ts +23 -0
  27. package/dist/lib/error/codes.d.ts.map +1 -0
  28. package/dist/lib/error/codes.js +22 -0
  29. package/dist/lib/error/index.d.ts +6 -0
  30. package/dist/lib/error/index.d.ts.map +1 -0
  31. package/dist/lib/error/index.js +5 -0
  32. package/dist/lib/{error-messages.d.ts → error/messages.d.ts} +2 -2
  33. package/dist/lib/error/messages.d.ts.map +1 -0
  34. package/dist/lib/{error-messages.js → error/messages.js} +13 -13
  35. package/dist/lib/{tool-errors.d.ts → error/payload.d.ts} +7 -13
  36. package/dist/lib/error/payload.d.ts.map +1 -0
  37. package/dist/lib/error/payload.js +108 -0
  38. package/dist/lib/mcp-interop.d.ts +1 -0
  39. package/dist/lib/mcp-interop.d.ts.map +1 -1
  40. package/dist/lib/mcp-interop.js +17 -9
  41. package/dist/lib/net/http.d.ts.map +1 -0
  42. package/dist/lib/{http.js → net/http.js} +11 -14
  43. package/dist/lib/net/index.d.ts +4 -0
  44. package/dist/lib/net/index.d.ts.map +1 -0
  45. package/dist/lib/net/index.js +3 -0
  46. package/dist/lib/{fetch-pipeline.d.ts → net/pipeline.d.ts} +3 -3
  47. package/dist/lib/net/pipeline.d.ts.map +1 -0
  48. package/dist/lib/{fetch-pipeline.js → net/pipeline.js} +7 -9
  49. package/dist/lib/{url.d.ts → net/url.d.ts} +2 -2
  50. package/dist/lib/net/url.d.ts.map +1 -0
  51. package/dist/lib/{url.js → net/url.js} +6 -8
  52. package/dist/lib/utils.d.ts +3 -18
  53. package/dist/lib/utils.d.ts.map +1 -1
  54. package/dist/lib/utils.js +33 -105
  55. package/dist/resources/index.d.ts.map +1 -1
  56. package/dist/resources/index.js +6 -3
  57. package/dist/schemas.d.ts +1 -1
  58. package/dist/server.d.ts.map +1 -1
  59. package/dist/server.js +12 -14
  60. package/dist/tasks/index.d.ts +2 -0
  61. package/dist/tasks/index.d.ts.map +1 -0
  62. package/dist/tasks/index.js +1 -0
  63. package/dist/tasks/manager.d.ts +123 -1
  64. package/dist/tasks/manager.d.ts.map +1 -1
  65. package/dist/tasks/manager.js +753 -18
  66. package/dist/tools/{fetch-url.d.ts → index.d.ts} +4 -5
  67. package/dist/tools/index.d.ts.map +1 -0
  68. package/dist/tools/{fetch-url.js → index.js} +14 -31
  69. package/dist/transform/index.d.ts +279 -0
  70. package/dist/transform/index.d.ts.map +1 -0
  71. package/dist/transform/index.js +5234 -0
  72. package/package.json +2 -2
  73. package/dist/cli.d.ts +0 -19
  74. package/dist/cli.d.ts.map +0 -1
  75. package/dist/cli.js +0 -65
  76. package/dist/http/health.d.ts +0 -8
  77. package/dist/http/health.d.ts.map +0 -1
  78. package/dist/http/health.js +0 -152
  79. package/dist/http/helpers.d.ts +0 -68
  80. package/dist/http/helpers.d.ts.map +0 -1
  81. package/dist/http/helpers.js +0 -404
  82. package/dist/lib/error-codes.d.ts +0 -11
  83. package/dist/lib/error-codes.d.ts.map +0 -1
  84. package/dist/lib/error-codes.js +0 -15
  85. package/dist/lib/error-messages.d.ts.map +0 -1
  86. package/dist/lib/fetch-pipeline.d.ts.map +0 -1
  87. package/dist/lib/http.d.ts.map +0 -1
  88. package/dist/lib/logger-names.d.ts +0 -14
  89. package/dist/lib/logger-names.d.ts.map +0 -1
  90. package/dist/lib/logger-names.js +0 -13
  91. package/dist/lib/session.d.ts +0 -44
  92. package/dist/lib/session.d.ts.map +0 -1
  93. package/dist/lib/session.js +0 -137
  94. package/dist/lib/tool-errors.d.ts.map +0 -1
  95. package/dist/lib/tool-errors.js +0 -252
  96. package/dist/lib/url.d.ts.map +0 -1
  97. package/dist/lib/zod.d.ts +0 -3
  98. package/dist/lib/zod.d.ts.map +0 -1
  99. package/dist/lib/zod.js +0 -27
  100. package/dist/tasks/call-contract.d.ts +0 -25
  101. package/dist/tasks/call-contract.d.ts.map +0 -1
  102. package/dist/tasks/call-contract.js +0 -59
  103. package/dist/tasks/execution.d.ts +0 -16
  104. package/dist/tasks/execution.d.ts.map +0 -1
  105. package/dist/tasks/execution.js +0 -241
  106. package/dist/tasks/handlers.d.ts +0 -11
  107. package/dist/tasks/handlers.d.ts.map +0 -1
  108. package/dist/tasks/handlers.js +0 -157
  109. package/dist/tasks/owner.d.ts +0 -43
  110. package/dist/tasks/owner.d.ts.map +0 -1
  111. package/dist/tasks/owner.js +0 -144
  112. package/dist/tasks/registry.d.ts +0 -20
  113. package/dist/tasks/registry.d.ts.map +0 -1
  114. package/dist/tasks/registry.js +0 -40
  115. package/dist/tasks/waiters.d.ts +0 -27
  116. package/dist/tasks/waiters.d.ts.map +0 -1
  117. package/dist/tasks/waiters.js +0 -114
  118. package/dist/tools/fetch-url.d.ts.map +0 -1
  119. package/dist/transform/dom-prep.d.ts +0 -16
  120. package/dist/transform/dom-prep.d.ts.map +0 -1
  121. package/dist/transform/dom-prep.js +0 -1287
  122. package/dist/transform/html-translators.d.ts +0 -5
  123. package/dist/transform/html-translators.d.ts.map +0 -1
  124. package/dist/transform/html-translators.js +0 -697
  125. package/dist/transform/markdown-cleanup.d.ts +0 -10
  126. package/dist/transform/markdown-cleanup.d.ts.map +0 -1
  127. package/dist/transform/markdown-cleanup.js +0 -542
  128. package/dist/transform/metadata.d.ts +0 -18
  129. package/dist/transform/metadata.d.ts.map +0 -1
  130. package/dist/transform/metadata.js +0 -462
  131. package/dist/transform/next-flight.d.ts +0 -2
  132. package/dist/transform/next-flight.d.ts.map +0 -1
  133. package/dist/transform/next-flight.js +0 -374
  134. package/dist/transform/shared.d.ts +0 -8
  135. package/dist/transform/shared.d.ts.map +0 -1
  136. package/dist/transform/shared.js +0 -137
  137. package/dist/transform/transform.d.ts +0 -38
  138. package/dist/transform/transform.d.ts.map +0 -1
  139. package/dist/transform/transform.js +0 -1041
  140. package/dist/transform/types.d.ts +0 -124
  141. package/dist/transform/types.d.ts.map +0 -1
  142. package/dist/transform/types.js +0 -5
  143. package/dist/transform/worker-pool.d.ts +0 -76
  144. package/dist/transform/worker-pool.d.ts.map +0 -1
  145. package/dist/transform/worker-pool.js +0 -725
  146. /package/dist/lib/{http.d.ts → net/http.d.ts} +0 -0
@@ -1,11 +1,10 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { ContentBlock } from '@modelcontextprotocol/sdk/types.js';
3
- import type { ServerResult } from '@modelcontextprotocol/sdk/types.js';
2
+ import { type ContentBlock, type ServerResult } from '@modelcontextprotocol/sdk/types.js';
4
3
  import type { z } from 'zod';
5
- import type { SharedFetchStage } from '../lib/fetch-pipeline.js';
6
4
  import { type ProgressReporter, type ToolHandlerExtra } from '../lib/mcp-interop.js';
5
+ import { type SharedFetchStage } from '../lib/net/index.js';
7
6
  import { fetchUrlInputSchema } from '../schemas.js';
8
- import { type TaskCapableToolSupport } from '../tasks/registry.js';
7
+ import { type TaskCapableToolSupport } from '../tasks/index.js';
9
8
  type FetchUrlInput = z.infer<typeof fetchUrlInputSchema>;
10
9
  interface ToolResponseBase {
11
10
  [key: string]: unknown;
@@ -33,4 +32,4 @@ export interface ToolRegistrationControls {
33
32
  }
34
33
  export declare function registerTools(server: McpServer): ToolRegistrationControls;
35
34
  export {};
36
- //# sourceMappingURL=fetch-url.d.ts.map
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAElB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,OAAO,EAGL,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAOL,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,mBAAmB,EAIpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAIL,KAAK,sBAAsB,EAG5B,MAAM,mBAAmB,CAAC;AAE3B,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEzD,UAAU,gBAAgB;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAkF/C,wBAAgB,0BAA0B,CACxC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,YAAY,EAAE,CAUhB;AAuCD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,GACnB,MAAM,GAAG,SAAS,CAUpB;AAED,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAGhB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM;IAGlC,WAAW,IAAI,IAAI;IAInB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAM1C,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQxC,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAQvC,OAAO,CAAC,QAAQ;CAiCjB;AA8FD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAa3B;AAqBD,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC3D;AAoBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,wBAAwB,CAuCzE"}
@@ -1,14 +1,11 @@
1
- import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
2
- import { config, logInfo, logWarn } from '../lib/core.js';
3
- import { finalizeInlineMarkdown, markdownTransform, performSharedFetch, withSignal, } from '../lib/fetch-pipeline.js';
4
- import { LOG_FETCH_URL } from '../lib/logger-names.js';
5
- import { createMcpError, createProgressReporter, registerToolPresentation, } from '../lib/mcp-interop.js';
6
- import { classifyAndLogToolError } from '../lib/tool-errors.js';
7
- import { composeAbortSignal, isAbortError, isObject, parseUrlOrNull, } from '../lib/utils.js';
8
- import { formatZodError } from '../lib/zod.js';
1
+ import { ErrorCode, } from '@modelcontextprotocol/sdk/types.js';
2
+ import { config, Loggers, logInfo } from '../lib/core.js';
3
+ import { classifyAndLogToolError, isAbortError } from '../lib/error/index.js';
4
+ import { createMcpError, createProgressReporter, registerToolPresentation, validateOrThrow, } from '../lib/mcp-interop.js';
5
+ import { finalizeInlineMarkdown, markdownTransform, performSharedFetch, withSignal, } from '../lib/net/index.js';
6
+ import { composeAbortSignal, isObject, parseUrlOrNull } from '../lib/utils.js';
9
7
  import { fetchUrlInputSchema, fetchUrlOutputSchema, normalizeExtractedMetadata, normalizePageTitle, } from '../schemas.js';
10
- import { withRequestContextIfMissing } from '../tasks/owner.js';
11
- import { registerTaskCapableTool, setTaskCapableToolSupport, unregisterTaskCapableTool, } from '../tasks/registry.js';
8
+ import { registerTaskCapableTool, setTaskCapableToolSupport, unregisterTaskCapableTool, withRequestContextIfMissing, } from '../tasks/index.js';
12
9
  export const FETCH_URL_TOOL_NAME = 'fetch-url';
13
10
  const FETCH_URL_TOOL_DESCRIPTION = `
14
11
  Fetch public webpages and convert HTML to clean Markdown.
@@ -64,18 +61,8 @@ function buildStructuredContent(pipeline, inlineResult, inputUrl) {
64
61
  ...(truncated ? { truncated: true } : {}),
65
62
  };
66
63
  }
67
- function validateStructuredContent(structuredContent, inputUrl) {
68
- const validation = fetchUrlOutputSchema.safeParse(structuredContent);
69
- if (validation.success)
70
- return;
71
- const issues = formatZodError(validation.error);
72
- logWarn('Tool output schema validation failed', {
73
- url: inputUrl,
74
- issues,
75
- }, LOG_FETCH_URL);
76
- throw createMcpError(ErrorCode.InternalError, 'Output validation failed', {
77
- issues,
78
- });
64
+ function validateStructuredContent(structuredContent) {
65
+ validateOrThrow(fetchUrlOutputSchema, structuredContent, ErrorCode.InternalError, 'Output validation failed', Loggers.LOG_FETCH_URL);
79
66
  }
80
67
  export function buildFetchUrlContentBlocks(structuredContent) {
81
68
  const markdown = typeof structuredContent['markdown'] === 'string'
@@ -88,7 +75,7 @@ export function buildFetchUrlContentBlocks(structuredContent) {
88
75
  }
89
76
  function buildResponse(pipeline, inlineResult, inputUrl) {
90
77
  const structuredContent = buildStructuredContent(pipeline, inlineResult, inputUrl);
91
- validateStructuredContent(structuredContent, inputUrl);
78
+ validateStructuredContent(structuredContent);
92
79
  return {
93
80
  content: buildFetchUrlContentBlocks(structuredContent),
94
81
  structuredContent,
@@ -216,7 +203,7 @@ async function executeFetch(input, extra) {
216
203
  ...(isObject(relatedTask) && typeof relatedTask['taskId'] === 'string'
217
204
  ? { taskId: relatedTask['taskId'] }
218
205
  : {}),
219
- }, LOG_FETCH_URL);
206
+ }, Loggers.LOG_FETCH_URL);
220
207
  progressPlan.reportStart();
221
208
  const { pipeline, inlineResult } = await performSharedFetch(buildFetchOptions(url, signal, progressPlan));
222
209
  const truncated = inlineResult.truncated ?? pipeline.data.truncated;
@@ -227,7 +214,7 @@ async function executeFetch(input, extra) {
227
214
  contentSize: inlineResult.contentSize,
228
215
  durationMs: Math.round(performance.now() - startedAt),
229
216
  ...(truncated ? { truncated: true } : {}),
230
- }, LOG_FETCH_URL);
217
+ }, Loggers.LOG_FETCH_URL);
231
218
  const response = buildResponse(pipeline, inlineResult, url);
232
219
  progressPlan.reportSuccess(inlineResult.contentSize);
233
220
  return response;
@@ -241,7 +228,7 @@ export async function fetchUrlToolHandler(input, extra) {
241
228
  const startedAt = performance.now();
242
229
  return executeFetch(input, extra).catch((error) => {
243
230
  const durationMs = Math.round(performance.now() - startedAt);
244
- return classifyAndLogToolError(error, { url: input.url, durationMs }, LOG_FETCH_URL, 'fetch-url', 'Failed to fetch URL');
231
+ return classifyAndLogToolError(error, { url: input.url, durationMs }, Loggers.LOG_FETCH_URL, 'fetch-url', 'Failed to fetch URL');
245
232
  });
246
233
  }
247
234
  /* -------------------------------------------------------------------------------------------------
@@ -265,11 +252,7 @@ function createTaskCapableDescriptor() {
265
252
  return {
266
253
  name: TOOL_DEFINITION.name,
267
254
  parseArguments: (args) => {
268
- const parsed = TOOL_DEFINITION.inputSchema.safeParse(args);
269
- if (!parsed.success) {
270
- throw createMcpError(ErrorCode.InvalidParams, formatZodError(parsed.error));
271
- }
272
- return parsed.data;
255
+ return validateOrThrow(TOOL_DEFINITION.inputSchema, args, ErrorCode.InvalidParams, 'Invalid parameters for fetch-url', Loggers.LOG_FETCH_URL);
273
256
  },
274
257
  execute: TOOL_DEFINITION.handler,
275
258
  getCompletionStatusMessage: getFetchCompletionStatusMessage,
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Shared types for the transform pipeline.
3
+ * Extracted to avoid circular dependencies between transform modules.
4
+ */
5
+ /**
6
+ * Metadata block for attaching source information to markdown output.
7
+ */
8
+ export interface MetadataBlock {
9
+ type: 'metadata';
10
+ title?: string;
11
+ description?: string;
12
+ author?: string;
13
+ url: string;
14
+ fetchedAt: string;
15
+ }
16
+ /**
17
+ * Article extracted by Readability.
18
+ */
19
+ export interface ExtractedArticle {
20
+ title?: string;
21
+ byline?: string;
22
+ content: string;
23
+ textContent: string;
24
+ excerpt?: string;
25
+ siteName?: string;
26
+ }
27
+ /**
28
+ * Metadata extracted from HTML meta tags.
29
+ */
30
+ export interface ExtractedMetadata {
31
+ title?: string | undefined;
32
+ description?: string | undefined;
33
+ author?: string | undefined;
34
+ image?: string | undefined;
35
+ favicon?: string | undefined;
36
+ publishedAt?: string | undefined;
37
+ modifiedAt?: string | undefined;
38
+ }
39
+ /**
40
+ * Result of content extraction (article + metadata).
41
+ */
42
+ export interface ExtractionResult {
43
+ article: ExtractedArticle | null;
44
+ metadata: ExtractedMetadata;
45
+ }
46
+ interface MarkdownPayload {
47
+ markdown: string;
48
+ title?: string | undefined;
49
+ truncated: boolean;
50
+ metadata?: ExtractedMetadata | undefined;
51
+ }
52
+ /**
53
+ * Result of HTML to markdown transformation.
54
+ */
55
+ export interface MarkdownTransformResult extends MarkdownPayload {
56
+ title: string | undefined;
57
+ }
58
+ /**
59
+ * Options for transform operations.
60
+ */
61
+ export interface TransformOptions {
62
+ includeMetadataFooter: boolean;
63
+ signal?: AbortSignal;
64
+ inputTruncated?: boolean;
65
+ }
66
+ /**
67
+ * Telemetry event emitted during transform stages.
68
+ */
69
+ export interface TransformStageEvent {
70
+ v: 1;
71
+ type: 'stage';
72
+ stage: string;
73
+ durationMs: number;
74
+ url: string;
75
+ requestId?: string;
76
+ operationId?: string;
77
+ truncated?: boolean;
78
+ }
79
+ /**
80
+ * Context for tracking transform stage timing.
81
+ */
82
+ export interface TransformStageContext {
83
+ readonly stage: string;
84
+ readonly startTime: number;
85
+ readonly url: string;
86
+ readonly budgetMs?: number;
87
+ readonly totalBudgetMs?: number;
88
+ }
89
+ /**
90
+ * Worker message types for transform workers.
91
+ */
92
+ export interface TransformWorkerTransformMessage {
93
+ type: 'transform';
94
+ id: string;
95
+ html?: string | undefined;
96
+ htmlBuffer?: Uint8Array | undefined;
97
+ encoding?: string | undefined;
98
+ url: string;
99
+ includeMetadataFooter: boolean;
100
+ inputTruncated?: boolean | undefined;
101
+ }
102
+ export interface TransformWorkerCancelledMessage {
103
+ type: 'cancelled';
104
+ id: string;
105
+ }
106
+ export interface TransformWorkerResultMessage {
107
+ type: 'result';
108
+ id: string;
109
+ result: MarkdownPayload;
110
+ }
111
+ export interface TransformWorkerErrorMessage {
112
+ type: 'error';
113
+ id: string;
114
+ error: {
115
+ name: string;
116
+ message: string;
117
+ url: string;
118
+ statusCode?: number | undefined;
119
+ details?: Record<string, unknown> | undefined;
120
+ };
121
+ }
122
+ export type TransformWorkerOutgoingMessage = TransformWorkerResultMessage | TransformWorkerErrorMessage | TransformWorkerCancelledMessage;
123
+ interface WorkerMessageHandlerOptions {
124
+ sendMessage: (message: TransformWorkerOutgoingMessage) => void;
125
+ runTransform: (html: string, url: string, options: TransformOptions) => MarkdownTransformResult;
126
+ }
127
+ export declare function createTransformMessageHandler(options: WorkerMessageHandlerOptions): (raw: unknown) => void;
128
+ export declare function normalizeDocumentTitle(title: string, baseUrl?: string): string;
129
+ export declare function extractMetadata(document: Document, baseUrl?: string): ExtractedMetadata;
130
+ export declare function extractMetadataFromHead(html: string, baseUrl?: string): ExtractedMetadata | null;
131
+ export declare function mergeMetadata(early: ExtractedMetadata | null, late: ExtractedMetadata): ExtractedMetadata;
132
+ export declare function extractTitleFromRawMarkdown(content: string): string | undefined;
133
+ export declare function addSourceToMarkdown(content: string, url: string): string;
134
+ export declare function isRawTextContent(content: string): boolean;
135
+ export declare function buildMetadataFooter(metadata?: MetadataBlock, fallbackUrl?: string): string;
136
+ export interface SyntheticTitleContext {
137
+ readonly title: string | undefined;
138
+ }
139
+ export declare function normalizeSyntheticTitleToken(value: string | undefined): string;
140
+ export declare function shouldPreferPrimaryHeadingTitle(primaryHeading: string | undefined, title: string | undefined): boolean;
141
+ export declare function isGithubRepositoryRootUrl(url: string): boolean;
142
+ export declare function maybeStripGithubPrimaryHeading(markdown: string, primaryHeading: string | undefined, url: string): string;
143
+ export declare function maybePrependSyntheticTitle(markdown: string, context: SyntheticTitleContext): string;
144
+ export declare const WP_PHOTON_HOST_PATTERN: RegExp;
145
+ export declare function extractNoscriptImages(document: Document): void;
146
+ export declare function resolveDocumentBody(document: Document): Element;
147
+ export declare function serializeDocumentForMarkdown(document: Document, fallback: string): string;
148
+ /** Surface hidden tab panels, then strip unselected tab triggers. */
149
+ export declare function normalizeTabContent(document: Document): void;
150
+ export declare function surfaceCodeEditorContent(document: Document): void;
151
+ export declare function stripDocsControls(document: Document): void;
152
+ export declare function stripScreenReaderText(document: Document): void;
153
+ export declare function runDocsControlPass(document: Document): void;
154
+ export declare function prepareDocumentForMarkdown(document: Document, baseUrl?: string, signal?: AbortSignal): void;
155
+ export declare function removeNoiseFromHtml(html: string, document?: Document, baseUrl?: string, signal?: AbortSignal): string;
156
+ export declare function getVisibleTextLength(htmlOrDocument: string | Document): number;
157
+ export declare function evaluateArticleContent(article: ExtractedArticle, document: Document): Document | null;
158
+ export declare function extractLanguageFromClassName(className: string): string | undefined;
159
+ export declare function resolveLanguageFromAttributes(className: string, dataLang: string): string | undefined;
160
+ export declare function detectLanguageFromCode(code: string): string | undefined;
161
+ export declare function translateHtmlFragmentToMarkdown(html: string): string;
162
+ interface CleanupOptions {
163
+ preserveEmptyHeadings?: boolean;
164
+ signal?: AbortSignal;
165
+ url?: string;
166
+ }
167
+ export declare function processFencedContent(content: string, processTextSegment: (text: string) => string): string;
168
+ export declare function finalizeMarkdownSections(content: string, options?: Pick<CleanupOptions, 'signal' | 'url'>): string;
169
+ export declare function cleanupMarkdownArtifacts(content: string, options?: CleanupOptions): string;
170
+ export declare function supplementMarkdownFromNextFlight(markdown: string, originalHtml: string): string;
171
+ interface StageBudget {
172
+ totalBudgetMs: number;
173
+ elapsedMs: number;
174
+ }
175
+ export declare function startTransformStage(url: string, stage: string, budget?: StageBudget): TransformStageContext | null;
176
+ export declare function endTransformStage(context: TransformStageContext | null, options?: {
177
+ truncated?: boolean;
178
+ }): number;
179
+ export declare function extractContent(html: string, url: string, options?: {
180
+ extractArticle?: boolean;
181
+ signal?: AbortSignal;
182
+ }): ExtractionResult;
183
+ export declare function htmlToMarkdown(html: string, metadata?: MetadataBlock, options?: {
184
+ url?: string;
185
+ signal?: AbortSignal | undefined;
186
+ document?: Document | undefined;
187
+ skipNoiseRemoval?: boolean | undefined;
188
+ }): string;
189
+ export declare function isExtractionSufficient(article: ExtractedArticle | null, originalHtmlOrDocument: string | Document): boolean;
190
+ export declare function determineContentExtractionSource(article: ExtractedArticle | null): article is ExtractedArticle;
191
+ export declare function createContentMetadataBlock(url: string, article: ExtractedArticle | null, extractedMeta: ExtractedMetadata, shouldExtractFromArticle: boolean, includeMetadataFooter: boolean): MetadataBlock | undefined;
192
+ export declare function transformHtmlToMarkdownInProcess(html: string, url: string, options: TransformOptions): MarkdownTransformResult;
193
+ interface TransformPoolStats {
194
+ queueDepth: number;
195
+ activeWorkers: number;
196
+ capacity: number;
197
+ }
198
+ export declare function getTransformPoolStats(): TransformPoolStats | null;
199
+ export declare function shutdownTransformWorkerPool(): Promise<void>;
200
+ type TransformExecutionOptions = TransformOptions & {
201
+ encoding?: string;
202
+ };
203
+ export declare function transformHtmlToMarkdown(html: string, url: string, options: TransformOptions): Promise<MarkdownTransformResult>;
204
+ export declare function transformBufferToMarkdown(htmlBuffer: Uint8Array, url: string, options: TransformExecutionOptions): Promise<MarkdownTransformResult>;
205
+ interface TransformWorkerPool {
206
+ transform(html: string, url: string, options: {
207
+ includeMetadataFooter: boolean;
208
+ signal?: AbortSignal;
209
+ inputTruncated?: boolean;
210
+ }): Promise<MarkdownTransformResult>;
211
+ close(): Promise<void>;
212
+ getQueueDepth(): number;
213
+ getActiveWorkers(): number;
214
+ getCapacity(): number;
215
+ }
216
+ declare class WorkerPool implements TransformWorkerPool {
217
+ private static readonly CLOSED_MESSAGE;
218
+ private readonly workers;
219
+ private capacity;
220
+ private readonly minCapacity;
221
+ private readonly maxCapacity;
222
+ private readonly queue;
223
+ private readonly inflight;
224
+ private readonly cancelAcks;
225
+ private readonly timeoutMs;
226
+ private readonly queueMax;
227
+ private closed;
228
+ private taskIdSeq;
229
+ private busyCount;
230
+ private draining;
231
+ private readonly restartBackoff;
232
+ constructor(size: number, timeoutMs: number);
233
+ transform(html: string, url: string, options: {
234
+ includeMetadataFooter: boolean;
235
+ signal?: AbortSignal;
236
+ inputTruncated?: boolean;
237
+ }): Promise<MarkdownTransformResult>;
238
+ transform(htmlBuffer: Uint8Array, url: string, options: {
239
+ includeMetadataFooter: boolean;
240
+ signal?: AbortSignal;
241
+ inputTruncated?: boolean;
242
+ encoding?: string;
243
+ }): Promise<MarkdownTransformResult>;
244
+ getQueueDepth(): number;
245
+ getActiveWorkers(): number;
246
+ getCapacity(): number;
247
+ resize(size: number): void;
248
+ close(): Promise<void>;
249
+ private ensureOpen;
250
+ private createPendingTask;
251
+ private onAbortSignal;
252
+ private abortInflight;
253
+ private clearAbortListener;
254
+ private spawnWorker;
255
+ private onWorkerBroken;
256
+ private restartWorker;
257
+ private onWorkerMessage;
258
+ private resolveWorkerResult;
259
+ private takeInflight;
260
+ private markBusy;
261
+ private markIdle;
262
+ private failTask;
263
+ private maybeScaleUp;
264
+ private drainQueue;
265
+ private dispatchFromQueue;
266
+ private registerInflight;
267
+ private sendToWorker;
268
+ private finalizeTask;
269
+ private abortAndCleanTask;
270
+ }
271
+ export declare function getOrCreateWorkerPool(): WorkerPool;
272
+ export declare function getWorkerPoolStats(): {
273
+ queueDepth: number;
274
+ activeWorkers: number;
275
+ capacity: number;
276
+ } | null;
277
+ export declare function shutdownWorkerPool(): Promise<void>;
278
+ export {};
279
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"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"}