amenbo 0.1.5 → 0.3.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 +11 -1
- package/README.md +11 -1
- package/dist/cache.d.ts +48 -2
- package/dist/cache.js +164 -53
- package/dist/cache.js.map +1 -1
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +59 -4
- package/dist/cli.js.map +1 -1
- package/dist/core.d.ts +6 -0
- package/dist/core.js +134 -44
- package/dist/core.js.map +1 -1
- package/dist/diff.d.ts +1 -1
- package/dist/diff.js +29 -9
- package/dist/diff.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -1
- package/dist/extract/dataSources.js +17 -4
- package/dist/extract/dataSources.js.map +1 -1
- package/dist/extract/markdown.d.ts +44 -0
- package/dist/extract/markdown.js +181 -2
- package/dist/extract/markdown.js.map +1 -1
- package/dist/extract/outline.d.ts +18 -0
- package/dist/extract/outline.js +37 -4
- package/dist/extract/outline.js.map +1 -1
- package/dist/extract/pdf.js +2 -2
- package/dist/extract/pruning.d.ts +4 -2
- package/dist/extract/pruning.js +36 -7
- package/dist/extract/pruning.js.map +1 -1
- package/dist/extract/qualityScore.d.ts +3 -2
- package/dist/extract/qualityScore.js +8 -3
- package/dist/extract/qualityScore.js.map +1 -1
- package/dist/fetcher/browser.js +15 -1
- package/dist/fetcher/browser.js.map +1 -1
- package/dist/fetcher/http.d.ts +11 -1
- package/dist/fetcher/http.js +6 -1
- package/dist/fetcher/http.js.map +1 -1
- package/dist/fetcher/index.d.ts +6 -0
- package/dist/fetcher/index.js +18 -13
- package/dist/fetcher/index.js.map +1 -1
- package/dist/installBrowser.d.ts +11 -0
- package/dist/installBrowser.js +30 -0
- package/dist/installBrowser.js.map +1 -0
- package/dist/links.d.ts +12 -0
- package/dist/links.js +32 -17
- package/dist/links.js.map +1 -1
- package/dist/politeness.d.ts +23 -3
- package/dist/politeness.js +27 -6
- package/dist/politeness.js.map +1 -1
- package/dist/screenshot.d.ts +2 -0
- package/dist/screenshot.js +14 -4
- package/dist/screenshot.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.js +55 -26
- package/dist/server.js.map +1 -1
- package/package.json +3 -6
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* - `amenbo fetch/links/screenshot <url> [options]` は対応するcore.tsのハンドラを呼び、
|
|
9
9
|
* TextBlockはそのまま標準出力へ、ImageBlock(スクリーンショット/スキャンPDF画像)は
|
|
10
10
|
* --out-dir配下へファイル保存しパスを列挙する(エージェント/ユーザーがそのまま開けるように)。
|
|
11
|
+
* - `amenbo install-browser` はChromium遅延化(postinstall廃止)対応で追加したコマンド。
|
|
12
|
+
* core.tsは経由せず、installBrowser.tsが同梱playwrightのCLIをspawnする。
|
|
11
13
|
* - 引数パース(parseCliArgs)は純関数として切り出し、ユニットテストできるようにしている。
|
|
12
14
|
* - キャッシュ・差分応答・レート制御の状態はMCPサーバーと同じ ~/.cache/amenbo (cache.ts)を
|
|
13
15
|
* 共有する。CLIは1コマンド=1プロセスのため、politenessのドメイン毎レート制御は
|
|
@@ -17,10 +19,13 @@ import { mkdirSync, realpathSync, writeFileSync } from "node:fs";
|
|
|
17
19
|
import { join } from "node:path";
|
|
18
20
|
import { parseArgs } from "node:util";
|
|
19
21
|
import { fileURLToPath } from "node:url";
|
|
22
|
+
import { resolveCacheDir } from "./cache.js";
|
|
20
23
|
import { cache, formatLinksResponse, handleFetchTool, handleScreenshotTool, politeness, resolvePackageVersion, } from "./core.js";
|
|
21
24
|
import { AmenboError } from "./errors.js";
|
|
22
25
|
import { closeBrowser } from "./fetcher/browser.js";
|
|
26
|
+
import { installBrowser } from "./installBrowser.js";
|
|
23
27
|
import { discoverLinks } from "./links.js";
|
|
28
|
+
import { MAX_SCALE, MIN_SCALE } from "./screenshot.js";
|
|
24
29
|
import { runServer } from "./server.js";
|
|
25
30
|
// ---- 引数パース(純関数。ユニットテスト対象) ----
|
|
26
31
|
/** 引数の使い方が不正な場合に投げる(cli.ts側でusageを表示しexit code 2にする)。 */
|
|
@@ -41,6 +46,18 @@ function parsePositiveFloat(raw, flag) {
|
|
|
41
46
|
}
|
|
42
47
|
return n;
|
|
43
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* レビュー指摘対応(Low): --scaleはparsePositiveFloatを通すだけで[0.5,1.0]範囲を検証しておらず、
|
|
51
|
+
* `--scale 3.0`のような範囲外値がscreenshot.ts clampScaleで黙って1.0にクランプされていた。
|
|
52
|
+
* MCP側はzod .min(0.5).max(1.0)で明示的にエラーになるため、CLIも同じ強度の検証で揃える。
|
|
53
|
+
*/
|
|
54
|
+
function parseScreenshotScale(raw) {
|
|
55
|
+
const n = parsePositiveFloat(raw, "--scale");
|
|
56
|
+
if (n < MIN_SCALE || n > MAX_SCALE) {
|
|
57
|
+
throw new CliUsageError(`--scaleは${MIN_SCALE}〜${MAX_SCALE}の範囲で指定してください: ${raw}`);
|
|
58
|
+
}
|
|
59
|
+
return n;
|
|
60
|
+
}
|
|
44
61
|
function requireUrl(positionals, command) {
|
|
45
62
|
const url = positionals[0];
|
|
46
63
|
if (!url) {
|
|
@@ -122,10 +139,19 @@ function parseScreenshotArgs(args) {
|
|
|
122
139
|
url,
|
|
123
140
|
...(values["viewport-only"] ? { viewportOnly: true } : {}),
|
|
124
141
|
...(values.width !== undefined ? { width: parsePositiveInt(values.width, "--width") } : {}),
|
|
125
|
-
...(values.scale !== undefined ? { scale:
|
|
142
|
+
...(values.scale !== undefined ? { scale: parseScreenshotScale(values.scale) } : {}),
|
|
126
143
|
...(values["out-dir"] !== undefined ? { outDir: values["out-dir"] } : {}),
|
|
127
144
|
};
|
|
128
145
|
}
|
|
146
|
+
function parseInstallBrowserArgs(args) {
|
|
147
|
+
const { values, positionals } = safeParseArgs(args, "install-browser", { help: { type: "boolean", short: "h" } });
|
|
148
|
+
if (values.help)
|
|
149
|
+
return { kind: "help", topic: "install-browser" };
|
|
150
|
+
if (positionals.length > 0) {
|
|
151
|
+
throw new CliUsageError(`install-browser: 不明な引数です: ${positionals[0]}`);
|
|
152
|
+
}
|
|
153
|
+
return { kind: "install-browser" };
|
|
154
|
+
}
|
|
129
155
|
/** CLI引数(process.argv.slice(2)相当)をコマンドへパースする純関数。 */
|
|
130
156
|
export function parseCliArgs(argv) {
|
|
131
157
|
if (argv.length === 0)
|
|
@@ -143,6 +169,8 @@ export function parseCliArgs(argv) {
|
|
|
143
169
|
return parseLinksArgs(rest);
|
|
144
170
|
if (first === "screenshot")
|
|
145
171
|
return parseScreenshotArgs(rest);
|
|
172
|
+
if (first === "install-browser")
|
|
173
|
+
return parseInstallBrowserArgs(rest);
|
|
146
174
|
throw new CliUsageError(`不明なコマンドです: ${first}`);
|
|
147
175
|
}
|
|
148
176
|
// ---- ヘルプ/usage文言 ----
|
|
@@ -155,6 +183,7 @@ function usageText() {
|
|
|
155
183
|
" fetch <url> [options] ページをMarkdownとして取得する",
|
|
156
184
|
" links <url> [options] ページ内のリンクを列挙する(sitemap/RSS優先)",
|
|
157
185
|
" screenshot <url> [options] ページのスクリーンショットを撮影する",
|
|
186
|
+
" install-browser スクリーンショット/SPA取得に必要なChromiumをインストールする(初回のみ)",
|
|
158
187
|
"",
|
|
159
188
|
"Options:",
|
|
160
189
|
" -h, --help ヘルプを表示する",
|
|
@@ -174,7 +203,7 @@ function fetchHelpText() {
|
|
|
174
203
|
" --page <n> ページ番号(既定 1)",
|
|
175
204
|
" --max-tokens <n> 1ページの概算トークン上限(既定 8000)",
|
|
176
205
|
" --force-full 差分応答(unchanged/diff)と定型ブロック除去を無効化し常に全文を返す",
|
|
177
|
-
" --out-dir <dir> screenshot切替時の画像保存先(既定
|
|
206
|
+
" --out-dir <dir> screenshot切替時の画像保存先(既定 $AMENBO_CACHE_DIR/screenshots-cli/、未設定時は ~/.cache/amenbo/screenshots-cli/)",
|
|
178
207
|
].join("\n");
|
|
179
208
|
}
|
|
180
209
|
function linksHelpText() {
|
|
@@ -187,10 +216,20 @@ function screenshotHelpText() {
|
|
|
187
216
|
"Options:",
|
|
188
217
|
" --viewport-only 最初のビューポート分のみ撮影する(既定はfullPage)",
|
|
189
218
|
" --width <n> タイル幅px(既定 1280)",
|
|
190
|
-
" --scale <x> 解像度スケール(
|
|
219
|
+
" --scale <x> 解像度スケール(0.5〜1.0、既定 1.0)。小さいほど画像トークンが減る",
|
|
191
220
|
" --out-dir <dir> 画像保存先(既定 カレントディレクトリ)",
|
|
192
221
|
].join("\n");
|
|
193
222
|
}
|
|
223
|
+
function installBrowserHelpText() {
|
|
224
|
+
return [
|
|
225
|
+
"amenbo install-browser",
|
|
226
|
+
"",
|
|
227
|
+
"スクリーンショット撮影やSPA(JavaScriptレンダリング必須)ページの取得に必要なChromiumを",
|
|
228
|
+
"インストールする(初回のみ、約170MBのダウンロード)。通常のHTTP取得(fetch/linksの大半)は",
|
|
229
|
+
"この操作なしで動作する。amenboに同梱されたバージョンのplaywright CLIを使うため、",
|
|
230
|
+
"バージョン不一致は起こらない。",
|
|
231
|
+
].join("\n");
|
|
232
|
+
}
|
|
194
233
|
function helpText(topic) {
|
|
195
234
|
if (topic === "fetch")
|
|
196
235
|
return fetchHelpText();
|
|
@@ -198,9 +237,22 @@ function helpText(topic) {
|
|
|
198
237
|
return linksHelpText();
|
|
199
238
|
if (topic === "screenshot")
|
|
200
239
|
return screenshotHelpText();
|
|
240
|
+
if (topic === "install-browser")
|
|
241
|
+
return installBrowserHelpText();
|
|
201
242
|
return usageText();
|
|
202
243
|
}
|
|
203
244
|
// ---- 出力(TextBlockはstdout、ImageBlockはファイル保存) ----
|
|
245
|
+
/**
|
|
246
|
+
* レビュー指摘対応(Medium・ユーザー確定仕様): `amenbo fetch`(mode auto)が品質低下でscreenshotへ
|
|
247
|
+
* 自動切替した場合の画像既定保存先。以前はoutDir未指定時にprocess.cwd()を使っており、
|
|
248
|
+
* リポジトリ直下等カレントディレクトリを黙って汚していた。cache.tsのキャッシュディレクトリ
|
|
249
|
+
* 解決ロジック(AMENBO_CACHE_DIR ?? ~/.cache/amenbo)を再利用し、その配下のscreenshots-cli/へ
|
|
250
|
+
* 保存する(実撮影キャッシュのscreenshots/とは別ディレクトリ)。screenshotサブコマンドは
|
|
251
|
+
* 明示的な視覚確認用途のため対象外(--out-dir未指定時は従来通りcwd)。
|
|
252
|
+
*/
|
|
253
|
+
function resolveFetchScreenshotDir() {
|
|
254
|
+
return join(resolveCacheDir(), "screenshots-cli");
|
|
255
|
+
}
|
|
204
256
|
/** ファイル名として安全なホスト名(取れなければ"page")。amenbo-<hostname>-<連番>.pngの命名に使う。 */
|
|
205
257
|
function hostnameForFilename(url) {
|
|
206
258
|
try {
|
|
@@ -246,7 +298,7 @@ async function dispatch(command) {
|
|
|
246
298
|
...(command.forceFull !== undefined ? { force_full: command.forceFull } : {}),
|
|
247
299
|
};
|
|
248
300
|
const blocks = await handleFetchTool(input);
|
|
249
|
-
writeBlocks(blocks, command.url, command.outDir ??
|
|
301
|
+
writeBlocks(blocks, command.url, command.outDir ?? resolveFetchScreenshotDir());
|
|
250
302
|
return;
|
|
251
303
|
}
|
|
252
304
|
if (command.kind === "links") {
|
|
@@ -291,6 +343,9 @@ export async function run(argv) {
|
|
|
291
343
|
return 0;
|
|
292
344
|
}
|
|
293
345
|
try {
|
|
346
|
+
if (command.kind === "install-browser") {
|
|
347
|
+
return await installBrowser();
|
|
348
|
+
}
|
|
294
349
|
await dispatch(command);
|
|
295
350
|
return 0;
|
|
296
351
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export declare function resolvePackageVersion(): string;
|
|
|
8
8
|
export declare function resolveCacheTtlMs(): number | undefined;
|
|
9
9
|
export declare const cache: PageCache;
|
|
10
10
|
export declare const politeness: PolitenessManager;
|
|
11
|
+
/** サーバー常駐プロセス向けの終了処理(exit/SIGINT/SIGTERM)を登録する。多重登録は行わない(冪等)。 */
|
|
12
|
+
export declare function registerCoreShutdownHandlers(): void;
|
|
11
13
|
interface ScreenshotTileData {
|
|
12
14
|
data: Buffer;
|
|
13
15
|
}
|
|
@@ -66,6 +68,8 @@ export interface FetchToolInput {
|
|
|
66
68
|
page?: number | undefined;
|
|
67
69
|
max_tokens?: number | undefined;
|
|
68
70
|
force_full?: boolean | undefined;
|
|
71
|
+
/** MCP progress notifications用(server.tsがprogressToken有無に応じて組み立てて渡す。CLIは渡さない)。 */
|
|
72
|
+
onProgress?: ((message: string) => void) | undefined;
|
|
69
73
|
}
|
|
70
74
|
export declare function handleFetchTool(input: FetchToolInput): Promise<Array<TextBlock | ImageBlock>>;
|
|
71
75
|
export interface ScreenshotToolInput {
|
|
@@ -73,6 +77,8 @@ export interface ScreenshotToolInput {
|
|
|
73
77
|
fullPage?: boolean | undefined;
|
|
74
78
|
width?: number | undefined;
|
|
75
79
|
scale?: number | undefined;
|
|
80
|
+
/** MCP progress notifications用(server.tsがprogressToken有無に応じて組み立てて渡す)。 */
|
|
81
|
+
onProgress?: ((message: string) => void) | undefined;
|
|
76
82
|
}
|
|
77
83
|
export declare function handleScreenshotTool(input: ScreenshotToolInput): Promise<Array<TextBlock | ImageBlock>>;
|
|
78
84
|
export {};
|
package/dist/core.js
CHANGED
|
@@ -15,7 +15,7 @@ import { diffMarkdown } from "./diff.js";
|
|
|
15
15
|
import { AmenboError, SectionNotFoundError } from "./errors.js";
|
|
16
16
|
import { detectDataSources } from "./extract/dataSources.js";
|
|
17
17
|
import { extractMarkdown } from "./extract/markdown.js";
|
|
18
|
-
import { buildOutline,
|
|
18
|
+
import { buildOutline, findSection, formatBreadcrumb } from "./extract/outline.js";
|
|
19
19
|
import { DEFAULT_PDF_MAX_BYTES, extractPdfText, looksLikePdf, markdownFromPdfText, renderPdfPages } from "./extract/pdf.js";
|
|
20
20
|
import { buildHandoffPreview } from "./extract/preview.js";
|
|
21
21
|
import { evaluateQuality } from "./extract/qualityScore.js";
|
|
@@ -57,29 +57,50 @@ export const cache = new PageCache(cacheTtlMs !== undefined ? { ttlMs: cacheTtlM
|
|
|
57
57
|
// code-reviewer指摘: MCPサーバー単体運用時(CLIを使わない場合)でも、このstore注入により
|
|
58
58
|
// waitTurn毎にSQLite I/O(host_requestsの読み取り+書き込み)が発生する。CLIとの
|
|
59
59
|
// プロセス間共有が不要な単一プロセス運用ではインメモリのlastRequestAtだけで十分だったところに、
|
|
60
|
-
// 常時わずかなディスクI/Oコストを払うトレードオフになる(
|
|
60
|
+
// 常時わずかなディスクI/Oコストを払うトレードオフになる(node:sqliteも同期I/Oで
|
|
61
61
|
// 小さな1行read/writeのため実測上は無視できるレベルだが、"低負荷優先"の設計原則上は
|
|
62
62
|
// 意図的なトレードオフとして明記しておく)。
|
|
63
|
+
// レビュー指摘対応: robots.txtの取得結果もcache.ts(robots_cacheテーブル)へ永続化し、
|
|
64
|
+
// プロセス間で共有する(CLIバルク収集時にコマンド毎にrobots.txtを再取得する低負荷原則違反への対応)。
|
|
63
65
|
export const politeness = new PolitenessManager({
|
|
64
66
|
store: {
|
|
65
67
|
getLastRequestAt: (host) => cache.getHostLastRequestAt(host),
|
|
66
68
|
setLastRequestAt: (host, at) => cache.setHostLastRequestAt(host, at),
|
|
67
69
|
},
|
|
70
|
+
robotsStore: {
|
|
71
|
+
get: (origin) => cache.getRobotsCache(origin),
|
|
72
|
+
set: (origin, body, fetchedAt) => cache.setRobotsCache(origin, body, fetchedAt),
|
|
73
|
+
},
|
|
68
74
|
});
|
|
69
75
|
// M2: cache.close()は同期処理なので'exit'イベント(非同期処理を待てない)内でも安全に呼べる。
|
|
70
76
|
// 一方でSIGINT/SIGTERMはブラウザのクリーンアップ(非同期)を待ってから明示的にprocess.exit()する
|
|
71
77
|
// 必要がある(fetcher/browser.tsのregisterCleanupHandlersと同様の理由。あちらは
|
|
72
78
|
// getBrowser()が一度も呼ばれない=chromium未起動のセッションではリスナー登録自体が行われない
|
|
73
79
|
// ため、ここでサーバー起点の終了処理として独立して登録しておく)。
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
//
|
|
81
|
+
// レビュー指摘対応(Medium): 以前はこの登録をモジュールトップレベルで即時実行していたため、
|
|
82
|
+
// core.tsをimportするだけの全テスト(vitestワーカープロセス)にもSIGINT/SIGTERMハンドラ
|
|
83
|
+
// (closeBrowser().finally(() => process.exit(0)))が仕込まれてしまい、テスト中断時にvitestの
|
|
84
|
+
// クリーンアップより先にprocess.exit(0)を呼びうる副作用があった。登録処理を関数へ切り出し、
|
|
85
|
+
// MCPサーバー起動経路(server.ts runServer())からのみ呼ぶことで、importするだけでは
|
|
86
|
+
// ホストプロセスに影響しないようにする。CLI(cli.ts)はrun()のfinallyでclosBrowser/cache.close済み
|
|
87
|
+
// のため、この登録は不要(サーバー常駐プロセスのみが対象)。
|
|
88
|
+
let coreShutdownHandlersRegistered = false;
|
|
89
|
+
/** サーバー常駐プロセス向けの終了処理(exit/SIGINT/SIGTERM)を登録する。多重登録は行わない(冪等)。 */
|
|
90
|
+
export function registerCoreShutdownHandlers() {
|
|
91
|
+
if (coreShutdownHandlersRegistered)
|
|
92
|
+
return;
|
|
93
|
+
coreShutdownHandlersRegistered = true;
|
|
94
|
+
process.once("exit", () => {
|
|
95
|
+
cache.close();
|
|
96
|
+
});
|
|
97
|
+
process.once("SIGINT", () => {
|
|
98
|
+
void closeBrowser().finally(() => process.exit(0));
|
|
99
|
+
});
|
|
100
|
+
process.once("SIGTERM", () => {
|
|
101
|
+
void closeBrowser().finally(() => process.exit(0));
|
|
102
|
+
});
|
|
103
|
+
}
|
|
83
104
|
const DEFAULT_MAX_TOKENS = 8000;
|
|
84
105
|
const DEFAULT_PAGE = 1;
|
|
85
106
|
const DEFAULT_SCREENSHOT_SCALE = 1.0;
|
|
@@ -100,8 +121,12 @@ class UnexpectedNotModifiedError extends AmenboError {
|
|
|
100
121
|
}
|
|
101
122
|
}
|
|
102
123
|
/** URLとselectorの組から、新規取得・変換したMarkdownと品質スコア/pruning/アダプタ/ジオメトリ結果を作る。 */
|
|
103
|
-
async function fetchAndExtract(url, selector, conditionalHeaders) {
|
|
104
|
-
|
|
124
|
+
async function fetchAndExtract(url, selector, conditionalHeaders, onProgress) {
|
|
125
|
+
// レビュー指摘対応: リダイレクトで別オリジンへ着地した場合、その着地先のrobots.txtも
|
|
126
|
+
// 確認する(guardedFetch内で着地先オリジンが変わった場合のみ呼ばれる。同一オリジン内
|
|
127
|
+
// リダイレクトや初回URLは呼び出し元のpoliteness.guardで確認済みのため二重チェックしない)。
|
|
128
|
+
const checkRobots = (targetUrl) => politeness.checkRobotsAllowed(targetUrl);
|
|
129
|
+
const fetchResult = await fetchPage(url, conditionalHeaders ? { headers: conditionalHeaders, onProgress, checkRobots } : { onProgress, checkRobots });
|
|
105
130
|
if ("notModified" in fetchResult) {
|
|
106
131
|
return { status: "not_modified" };
|
|
107
132
|
}
|
|
@@ -123,8 +148,8 @@ async function fetchAndExtract(url, selector, conditionalHeaders) {
|
|
|
123
148
|
// ジオメトリでも改善しなかった場合はHTTP tierの結果(body-fallback)をそのまま使う。
|
|
124
149
|
if (!selector && fetchResult.tier === "http" && extracted.extractionMethod === "body-fallback") {
|
|
125
150
|
try {
|
|
126
|
-
await politeness.waitTurn(url); // 追加のブラウザ遷移が発生するため、律速のため再度順番を待つ
|
|
127
|
-
const browserFetchResult = await fetchPage(url, { forceBrowser: true });
|
|
151
|
+
await politeness.waitTurn(url, onProgress); // 追加のブラウザ遷移が発生するため、律速のため再度順番を待つ
|
|
152
|
+
const browserFetchResult = await fetchPage(url, { forceBrowser: true, onProgress, checkRobots });
|
|
128
153
|
if (!("notModified" in browserFetchResult) && !("handoff" in browserFetchResult)) {
|
|
129
154
|
const browserExtracted = extractMarkdown(browserFetchResult.html, { url: browserFetchResult.finalUrl, geometry: browserFetchResult.geometry });
|
|
130
155
|
if (browserExtracted.extractionMethod === "geometry") {
|
|
@@ -182,10 +207,16 @@ function pageFromCacheEntry(url, cached, cacheStatus) {
|
|
|
182
207
|
* (同一URLでも抽出結果がselector毎に変わるため)。品質スコア/アダプタ判定結果もキャッシュ
|
|
183
208
|
* メタデータへ保存し、'fresh'なキャッシュ応答時にも再フェッチ無しでmode:autoの判定を再現する。
|
|
184
209
|
* 機能B: 非HTMLコンテンツ(ハンドオフ対象)を取得した場合は { kind: "handoff" } を返す。
|
|
210
|
+
*
|
|
211
|
+
* レビュー指摘対応: politeness.guard(robots.txt確認+レート制御待機)は「実際にサイトへ
|
|
212
|
+
* 取得しに行く」直前でのみ呼ぶ。キャッシュfresh応答時は実ネットワークアクセスが発生しない
|
|
213
|
+
* ため、outline→sectionの推奨フロー等でキャッシュヒットするたびに待機・robots再判定という
|
|
214
|
+
* 自己ペナルティが発生していた不具合の修正。selector指定時は必ずfetchするため常にguardする。
|
|
185
215
|
*/
|
|
186
|
-
async function resolvePage(url, selector) {
|
|
216
|
+
async function resolvePage(url, selector, onProgress) {
|
|
187
217
|
if (selector) {
|
|
188
|
-
|
|
218
|
+
await politeness.guard(url, onProgress);
|
|
219
|
+
const result = await fetchAndExtract(url, selector, undefined, onProgress);
|
|
189
220
|
if (result.status === "not_modified") {
|
|
190
221
|
throw new UnexpectedNotModifiedError(url);
|
|
191
222
|
}
|
|
@@ -211,12 +242,15 @@ async function resolvePage(url, selector) {
|
|
|
211
242
|
if (cached && cache.isFresh(cached)) {
|
|
212
243
|
return pageFromCacheEntry(url, cached, "fresh");
|
|
213
244
|
}
|
|
245
|
+
// 条件付きGET(304)も含め実際にサーバーへ通信するため、ここでguardする
|
|
246
|
+
// (キャッシュfresh応答で早期returnした場合はguardしない=上のコメント参照)。
|
|
247
|
+
await politeness.guard(url, onProgress);
|
|
214
248
|
const conditionalHeaders = {};
|
|
215
249
|
if (cached?.etag)
|
|
216
250
|
conditionalHeaders["If-None-Match"] = cached.etag;
|
|
217
251
|
if (cached?.lastModified)
|
|
218
252
|
conditionalHeaders["If-Modified-Since"] = cached.lastModified;
|
|
219
|
-
const result = await fetchAndExtract(url, undefined, Object.keys(conditionalHeaders).length > 0 ? conditionalHeaders : undefined);
|
|
253
|
+
const result = await fetchAndExtract(url, undefined, Object.keys(conditionalHeaders).length > 0 ? conditionalHeaders : undefined, onProgress);
|
|
220
254
|
if (result.status === "not_modified") {
|
|
221
255
|
if (!cached)
|
|
222
256
|
throw new UnexpectedNotModifiedError(url);
|
|
@@ -287,16 +321,13 @@ async function resolveScreenshot(url, options) {
|
|
|
287
321
|
// このあとcaptureTiledScreenshot内のnavigateSafelyでも検証するが、それより前段で
|
|
288
322
|
// クリーンな型付きエラーとして早期に弾く)。
|
|
289
323
|
assertHttpScheme(url);
|
|
290
|
-
// 実URLへの独立したブラウザ遷移が発生するため、markdown抽出時とは別にpolitenessの順番待ちを行う。
|
|
291
|
-
// ただし呼び出し元(handleFetchTool)で既にguard済みの場合はskipGuardで二重待機を避ける。
|
|
292
|
-
if (!options.skipGuard) {
|
|
293
|
-
await politeness.guard(url);
|
|
294
|
-
}
|
|
295
324
|
const cacheKey = computeScreenshotCacheKey(url, options.width, options.scale, options.fullPage);
|
|
296
325
|
const cached = cache.getScreenshot(cacheKey);
|
|
297
326
|
if (cached && cache.isFresh(cached)) {
|
|
298
327
|
const tiles = readCachedTiles(cached.tilePaths);
|
|
299
328
|
if (tiles) {
|
|
329
|
+
// レビュー指摘対応(#4と同型): キャッシュ済みタイルを返すだけならサイトへ取得しに行かない
|
|
330
|
+
// ため、guard(robots確認+レート制御待機)を行わない。実撮影に進む場合のみ下でguardする。
|
|
300
331
|
return {
|
|
301
332
|
finalUrl: cached.url,
|
|
302
333
|
tiles,
|
|
@@ -308,6 +339,10 @@ async function resolveScreenshot(url, options) {
|
|
|
308
339
|
}
|
|
309
340
|
// PNGファイル欠損: キャッシュmiss扱いで下の再撮影へフォールスルーする
|
|
310
341
|
}
|
|
342
|
+
// レビュー指摘対応: 実URLへの独立したブラウザ遷移が発生する直前でguardする(markdown取得時の
|
|
343
|
+
// guardとは別枠。handleFetchTool冒頭の共通guardは撤去済み)。キャッシュfresh返却時は通らない。
|
|
344
|
+
await politeness.guard(url, options.onProgress);
|
|
345
|
+
options.onProgress?.("スクリーンショットを撮影しています…");
|
|
311
346
|
const captured = await captureTiledScreenshot(url, options);
|
|
312
347
|
cache.setScreenshot({
|
|
313
348
|
cacheKey,
|
|
@@ -347,12 +382,14 @@ function budgetExceededLine(paginated) {
|
|
|
347
382
|
export function dataSourcesSection(hints) {
|
|
348
383
|
return hints.length > 0 ? `\n\ndata_sources:\n${hints.join("\n")}` : "";
|
|
349
384
|
}
|
|
350
|
-
function formatMarkdownResponse(page, paginated, sectionId, templateRemovedCount) {
|
|
385
|
+
function formatMarkdownResponse(page, paginated, sectionId, templateRemovedCount, breadcrumb = null) {
|
|
351
386
|
const header = [
|
|
352
387
|
`title: ${page.title ?? "(なし)"}`,
|
|
353
388
|
`url: ${page.finalUrl}`,
|
|
354
389
|
`mode_used: markdown`,
|
|
355
390
|
...(sectionId ? [`section: ${sectionId}`] : []),
|
|
391
|
+
// leaf節を単独取得したとき、この節が属する上位見出しの連なりを補い文脈喪失を防ぐ。
|
|
392
|
+
...(breadcrumb ? [`section_path: ${breadcrumb}`] : []),
|
|
356
393
|
`cache: ${page.cacheStatus}`,
|
|
357
394
|
`tokens: ${paginated.tokens}`,
|
|
358
395
|
`page: ${paginated.page} of ${paginated.totalPages}`,
|
|
@@ -437,7 +474,13 @@ export function buildScreenshotContent(page, screenshot, reason) {
|
|
|
437
474
|
export function formatLinksResponse(url, result) {
|
|
438
475
|
const header = [`url: ${url}`, `source: ${result.source}`, `count: ${result.links.length}${result.truncated ? " (truncated)" : ""}`].join("\n");
|
|
439
476
|
const body = result.links.map((link) => (link.title ? `- ${link.title} — ${link.url}` : `- ${link.url}`)).join("\n");
|
|
440
|
-
|
|
477
|
+
// レビュー指摘対応: 0件のとき、フィルタで全部落ちたのか(preFilterCount>0)、
|
|
478
|
+
// sitemap/RSS/ページ自体が空だったのか(preFilterCount===0)をエージェントが判別できるようにする。
|
|
479
|
+
// filter未指定時はpreFilterCount===links.lengthのためこの分岐には入らない。
|
|
480
|
+
const empty = result.preFilterCount > 0
|
|
481
|
+
? `(リンクが見つかりませんでした。フィルタ前 ${result.preFilterCount} 件。filterに一致しませんでした)`
|
|
482
|
+
: "(リンクが見つかりませんでした)";
|
|
483
|
+
return `${header}\n\n${body || empty}`;
|
|
441
484
|
}
|
|
442
485
|
// ---- 機能B: 非HTMLコンテンツのハンドオフ応答 ----
|
|
443
486
|
/**
|
|
@@ -507,17 +550,46 @@ function formatPdfTextResponse(title, finalUrl, cacheStatus, pdfPageCount, pagin
|
|
|
507
550
|
].join("\n");
|
|
508
551
|
return `${header}\n\n${paginated.content}`;
|
|
509
552
|
}
|
|
553
|
+
/** キャッシュ済みPDFエントリからテキスト応答を組み立てる(fresh応答/304再検証後の応答で共用)。 */
|
|
554
|
+
function formatPdfResponseFromCache(url, cached, maxTokens, page) {
|
|
555
|
+
const paginated = paginateMarkdown(cached.markdown, maxTokens, page);
|
|
556
|
+
const title = cached.metadata.title ?? null;
|
|
557
|
+
const finalUrl = cached.metadata.finalUrl ?? url;
|
|
558
|
+
const pdfPageCount = Number(cached.metadata.pdfPageCount ?? 0);
|
|
559
|
+
return formatPdfTextResponse(title, finalUrl, "fresh", pdfPageCount, paginated);
|
|
560
|
+
}
|
|
510
561
|
/** PDFはキャッシュ層(§3-3等)を流用しつつ独立した経路で扱う。テキスト層があればMarkdown、無ければ画像タイル。 */
|
|
511
|
-
async function handlePdfFetch(url, page, maxTokens) {
|
|
562
|
+
async function handlePdfFetch(url, page, maxTokens, onProgress) {
|
|
512
563
|
const cached = cache.get(url);
|
|
513
564
|
if (cached && cache.isFresh(cached)) {
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
565
|
+
return [{ type: "text", text: formatPdfResponseFromCache(url, cached, maxTokens, page) }];
|
|
566
|
+
}
|
|
567
|
+
// レビュー指摘対応: キャッシュfresh応答時は実ネットワークアクセスが発生しないため
|
|
568
|
+
// guardしない(resolvePageと同じ方針)。実際にPDFを取得しに行く直前でのみguardする。
|
|
569
|
+
await politeness.guard(url, onProgress);
|
|
570
|
+
// 低負荷原則対応: TTL失効後もキャッシュ(etag/last-modified)があれば条件付きGETで再検証する。
|
|
571
|
+
// HTML経路(resolvePage)は既にこの流儀で304時のフルDL+再パースを回避しているのに対し、
|
|
572
|
+
// PDF経路はTTL失効後は常にフルDL+全ページ再パースを行っており、20MB級の官公庁PDFで
|
|
573
|
+
// 内容不変でも毎回無駄なコストを払っていた不整合の修正。
|
|
574
|
+
const conditionalHeaders = {};
|
|
575
|
+
if (cached?.etag)
|
|
576
|
+
conditionalHeaders["If-None-Match"] = cached.etag;
|
|
577
|
+
if (cached?.lastModified)
|
|
578
|
+
conditionalHeaders["If-Modified-Since"] = cached.lastModified;
|
|
579
|
+
const binary = await httpGetBinary(url, {
|
|
580
|
+
maxBytes: DEFAULT_PDF_MAX_BYTES,
|
|
581
|
+
checkRobots: (targetUrl) => politeness.checkRobotsAllowed(targetUrl),
|
|
582
|
+
...(Object.keys(conditionalHeaders).length > 0 ? { headers: conditionalHeaders } : {}),
|
|
583
|
+
});
|
|
584
|
+
if (binary.status === 304) {
|
|
585
|
+
if (!cached)
|
|
586
|
+
throw new UnexpectedNotModifiedError(url);
|
|
587
|
+
cache.touch(url);
|
|
588
|
+
// PDF応答フォーマットのcacheStatus型は"fresh"|"miss"のみのため、304再検証も
|
|
589
|
+
// "fresh"として表示する(HTML応答の"revalidated"相当だが、既存フォーマットは変更しない)。
|
|
590
|
+
return [{ type: "text", text: formatPdfResponseFromCache(url, cached, maxTokens, page) }];
|
|
519
591
|
}
|
|
520
|
-
|
|
592
|
+
onProgress?.("PDFを解析しています…");
|
|
521
593
|
const textResult = await extractPdfText(binary.bytes);
|
|
522
594
|
if (textResult.hasTextLayer) {
|
|
523
595
|
const markdown = markdownFromPdfText(textResult);
|
|
@@ -555,10 +627,15 @@ export async function handleFetchTool(input) {
|
|
|
555
627
|
// 公開品質バグ修正: robots.txt取得(politeness.guard)より前にスキームを検証する(理由は
|
|
556
628
|
// resolveScreenshotのコメント参照)。zodの.url()はスキームを制限しないため、ここでの
|
|
557
629
|
// 検証が実質的な最初の関門になる。
|
|
630
|
+
//
|
|
631
|
+
// レビュー指摘対応: 以前はここで全mode共通の無条件politeness.guardを実行していたが、
|
|
632
|
+
// キャッシュfresh応答(実ネットワークアクセスが発生しない)でも毎回レート制御の待機と
|
|
633
|
+
// robots.txt再判定が走る自己ペナルティになっていた。guardは実際にサイトへ取得しに行く
|
|
634
|
+
// 各経路(resolvePage/handlePdfFetch/resolveScreenshot)の内部で、必要な箇所にのみ
|
|
635
|
+
// 個別に行う設計へ変更した(このファイル内の各所コメント参照)。
|
|
558
636
|
assertHttpScheme(input.url);
|
|
559
|
-
await politeness.guard(input.url);
|
|
560
637
|
if (looksLikePdf(input.url, null)) {
|
|
561
|
-
return handlePdfFetch(input.url, page, maxTokens);
|
|
638
|
+
return handlePdfFetch(input.url, page, maxTokens, input.onProgress);
|
|
562
639
|
}
|
|
563
640
|
// 公開品質バグ修正: mode: screenshot(section未指定時)はMarkdown抽出結果を一切使わないため、
|
|
564
641
|
// resolvePage(素のHTTP GETを含む二段フェッチ)を経由せずブラウザへ直行する。
|
|
@@ -571,15 +648,25 @@ export async function handleFetchTool(input) {
|
|
|
571
648
|
fullPage: true,
|
|
572
649
|
width: DEFAULT_TILE_WIDTH,
|
|
573
650
|
scale: DEFAULT_SCREENSHOT_SCALE,
|
|
574
|
-
|
|
651
|
+
onProgress: input.onProgress,
|
|
575
652
|
});
|
|
576
653
|
return buildScreenshotContent({ title: null }, screenshot, null);
|
|
577
654
|
}
|
|
578
|
-
const resolvedOrHandoff = await resolvePage(input.url, input.selector);
|
|
655
|
+
const resolvedOrHandoff = await resolvePage(input.url, input.selector, input.onProgress);
|
|
579
656
|
// 機能B: 非HTMLコンテンツはMarkdown抽出・キャッシュ・mode/selector/section等を適用せず、
|
|
580
657
|
// メタデータ+プレビュー+curl誘導のハンドオフ応答を返す(PDFのURL判定と同様の独立経路)。
|
|
658
|
+
//
|
|
659
|
+
// レビュー指摘対応: ただしcontent-typeでPDFと判明した場合(URL拡張子には現れない
|
|
660
|
+
// 官公庁の`/download?id=123`型ダウンロードエンドポイント等)は、行き止まりのハンドオフ
|
|
661
|
+
// 応答にせずhandlePdfFetch(既存のPDF専用経路)へ合流させる。関数冒頭のlooksLikePdf(input.url, null)
|
|
662
|
+
// はURL拡張子で早期判明する場合の経路であり、ここはcontent-type確定後にのみ判明する
|
|
663
|
+
// 場合の救済経路のため、拡張子ありのPDFが二重処理されることはない。
|
|
581
664
|
if ("kind" in resolvedOrHandoff) {
|
|
582
|
-
|
|
665
|
+
const { handoff } = resolvedOrHandoff;
|
|
666
|
+
if (looksLikePdf(handoff.finalUrl, handoff.contentType)) {
|
|
667
|
+
return handlePdfFetch(input.url, page, maxTokens, input.onProgress);
|
|
668
|
+
}
|
|
669
|
+
return [{ type: "text", text: formatHandoffResponse(handoff, maxTokens) }];
|
|
583
670
|
}
|
|
584
671
|
const resolved = resolvedOrHandoff;
|
|
585
672
|
// Phase 4 テンプレート学習: 定型ブロック(ヘッダ/フッタ/定型ナビ等)を表示直前に除去する。
|
|
@@ -591,12 +678,13 @@ export async function handleFetchTool(input) {
|
|
|
591
678
|
const view = { ...resolved, markdown: displayMarkdown, previousMarkdown: previousDisplayMarkdown };
|
|
592
679
|
// sectionが指定された場合は、mode指定に関わらずその節のMarkdownのみを返す(差分応答は適用しない)
|
|
593
680
|
if (input.section) {
|
|
594
|
-
const
|
|
595
|
-
if (
|
|
681
|
+
const section = findSection(view.markdown, input.section);
|
|
682
|
+
if (section === null) {
|
|
596
683
|
throw new SectionNotFoundError(input.url, input.section);
|
|
597
684
|
}
|
|
598
|
-
const paginated = paginateMarkdown(
|
|
599
|
-
|
|
685
|
+
const paginated = paginateMarkdown(section.content, maxTokens, page);
|
|
686
|
+
const breadcrumb = formatBreadcrumb(section.ancestors);
|
|
687
|
+
return [{ type: "text", text: formatMarkdownResponse(view, paginated, input.section, templateRemovedCount, breadcrumb) }];
|
|
600
688
|
}
|
|
601
689
|
if (mode === "outline") {
|
|
602
690
|
const outline = buildOutline(view.markdown);
|
|
@@ -611,11 +699,13 @@ export async function handleFetchTool(input) {
|
|
|
611
699
|
// 二重に撮影・保存されてしまうため、両経路で必ずinput.urlを渡すよう統一する
|
|
612
700
|
// (resolveScreenshot自身のブラウザナビゲーションが同じリダイレクトを辿るため実害は無い)。
|
|
613
701
|
if (mode === "auto" && resolved.lowQuality) {
|
|
702
|
+
// レビュー指摘対応: resolvePage内のmarkdown取得guardとは別の、screenshotナビゲーションの
|
|
703
|
+
// ための独立したguardがresolveScreenshot内で行われる(=より正確な礼儀)。
|
|
614
704
|
const screenshot = await resolveScreenshot(input.url, {
|
|
615
705
|
fullPage: true,
|
|
616
706
|
width: DEFAULT_TILE_WIDTH,
|
|
617
707
|
scale: DEFAULT_SCREENSHOT_SCALE,
|
|
618
|
-
|
|
708
|
+
onProgress: input.onProgress,
|
|
619
709
|
});
|
|
620
710
|
return buildScreenshotContent(resolved, screenshot, resolved.qualityReason);
|
|
621
711
|
}
|
|
@@ -636,13 +726,13 @@ export async function handleFetchTool(input) {
|
|
|
636
726
|
return [{ type: "text", text: formatMarkdownResponse(view, paginated, null, templateRemovedCount) }];
|
|
637
727
|
}
|
|
638
728
|
// テスト用export(既存スタイルに合わせた最小のテスト可能化。politeness.guard呼び出し回数の検証用)。
|
|
639
|
-
// 独立screenshot
|
|
640
|
-
// 行わないため、resolveScreenshot自身が既定でguardする(skipGuard未指定)。
|
|
729
|
+
// 独立screenshotツールも含め、resolveScreenshotは常に自身でguardする。
|
|
641
730
|
export async function handleScreenshotTool(input) {
|
|
642
731
|
const screenshot = await resolveScreenshot(input.url, {
|
|
643
732
|
fullPage: input.fullPage ?? true,
|
|
644
733
|
width: input.width ?? DEFAULT_TILE_WIDTH,
|
|
645
734
|
scale: input.scale ?? DEFAULT_SCREENSHOT_SCALE,
|
|
735
|
+
onProgress: input.onProgress,
|
|
646
736
|
});
|
|
647
737
|
return buildScreenshotContent({ title: null }, screenshot, null);
|
|
648
738
|
}
|