amenbo 0.5.0 → 0.6.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.
@@ -178,7 +178,7 @@ export function formatHandoffResponse(handoff, maxTokens) {
178
178
  return `${header}${previewBlock}${hint}`;
179
179
  }
180
180
  // ---- PDF対応(URL判定で独立経路。mode/selector/section等は適用しない) ----
181
- export function formatPdfTextResponse(title, finalUrl, cacheStatus, pdfPageCount, paginated) {
181
+ export function formatPdfTextResponse(title, finalUrl, cacheStatus, pdfPageCount, paginated, extractedPageCount = pdfPageCount) {
182
182
  const header = [
183
183
  `title: ${title ?? "(なし)"}`,
184
184
  `url: ${finalUrl}`,
@@ -188,16 +188,42 @@ export function formatPdfTextResponse(title, finalUrl, cacheStatus, pdfPageCount
188
188
  `page: ${paginated.page} of ${paginated.totalPages}`,
189
189
  `fetch_tier: pdf`,
190
190
  `pdf_pages: ${pdfPageCount}`,
191
+ // 打ち切りは黙って行わない(利用者が続きの有無を判断できるようにする)
192
+ ...(extractedPageCount < pdfPageCount
193
+ ? [`pdf_pages_extracted: ${extractedPageCount}(ページ数上限のため先頭${extractedPageCount}ページのみ抽出。以降はcurl等での直接取得が必要)`]
194
+ : []),
191
195
  ...budgetExceededLine(paginated),
192
196
  ].join("\n");
193
197
  return `${header}\n\n${paginated.content}`;
194
198
  }
199
+ /**
200
+ * テキスト層の無いPDF(スキャンPDF)の画像応答ヘッダを組み立てる。
201
+ *
202
+ * ページ数上限で打ち切っている場合、テキスト層の有無は先頭ページからしか判定していない。
203
+ * 「PDFにテキスト層がありません」と全体について言い切ると、先頭がスキャンで後半に
204
+ * テキスト層があるPDFで誤った申告になるため、何を根拠に判定したかをそのまま出す。
205
+ */
206
+ export function formatPdfImageResponse(title, finalUrl, pdfPageCount, extractedPageCount, tileCount) {
207
+ const judged = extractedPageCount < pdfPageCount
208
+ ? `先頭${extractedPageCount}ページにテキスト層がありません(ページ数上限のため全体は判定していません)`
209
+ : "PDFにテキスト層がありません(スキャンPDFの可能性)";
210
+ return [
211
+ `title: ${title ?? "(なし)"}`,
212
+ `url: ${finalUrl}`,
213
+ `mode_used: screenshot`,
214
+ `cache: miss`,
215
+ `reason: ${judged}。全${pdfPageCount}ページ中先頭${tileCount}ページを画像化`,
216
+ `tiles: ${tileCount}`,
217
+ `fetch_tier: pdf`,
218
+ ].join("\n");
219
+ }
195
220
  /** キャッシュ済みPDFエントリからテキスト応答を組み立てる(fresh応答/304再検証後の応答で共用)。 */
196
221
  export function formatPdfResponseFromCache(url, cached, maxTokens, page) {
197
222
  const paginated = paginateMarkdown(cached.markdown, maxTokens, page);
198
223
  const title = cached.metadata.title ?? null;
199
224
  const finalUrl = cached.metadata.finalUrl ?? url;
200
225
  const pdfPageCount = Number(cached.metadata.pdfPageCount ?? 0);
201
- return formatPdfTextResponse(title, finalUrl, "fresh", pdfPageCount, paginated);
226
+ const extractedPageCount = Number(cached.metadata.pdfExtractedPageCount ?? pdfPageCount);
227
+ return formatPdfTextResponse(title, finalUrl, "fresh", pdfPageCount, paginated, extractedPageCount);
202
228
  }
203
229
  //# sourceMappingURL=formatting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../src/formatting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../src/formatting.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,8 @@ export declare class PolitenessManager {
71
71
  * onProgress: 実際にsleepが発生する場合のみ呼ばれる(待機0のときは呼ばれない)。
72
72
  */
73
73
  waitTurn(url: string, onProgress?: ((message: string) => void) | undefined): Promise<void>;
74
+ /** ホストへ1リクエスト発行したことを記録する(インメモリ + プロセス間共有ストア)。 */
75
+ private noteRequest;
74
76
  /**
75
77
  * N8: robotsCache/locks/lastRequestAtは訪問したホスト毎に1エントリずつ増え、長時間稼働する
76
78
  * MCPサーバープロセスでは無制限に増加しうる。robotsTtlMsを「エントリの生存期間」の目安として
@@ -90,15 +90,18 @@ export class PolitenessManager {
90
90
  onProgress?.("アクセス間隔を確保するため待機しています…");
91
91
  await this.sleep(intervalMs - elapsed);
92
92
  }
93
- const requestAt = this.now();
94
- this.lastRequestAt.set(host, requestAt);
95
- this.store?.setLastRequestAt(host, requestAt);
93
+ this.noteRequest(host, this.now());
96
94
  }
97
95
  finally {
98
96
  release();
99
97
  entry.settled = true;
100
98
  }
101
99
  }
100
+ /** ホストへ1リクエスト発行したことを記録する(インメモリ + プロセス間共有ストア)。 */
101
+ noteRequest(host, at) {
102
+ this.lastRequestAt.set(host, at);
103
+ this.store?.setLastRequestAt(host, at);
104
+ }
102
105
  /**
103
106
  * N8: robotsCache/locks/lastRequestAtは訪問したホスト毎に1エントリずつ増え、長時間稼働する
104
107
  * MCPサーバープロセスでは無制限に増加しうる。robotsTtlMsを「エントリの生存期間」の目安として
@@ -185,6 +188,11 @@ export class PolitenessManager {
185
188
  const fetchedAt = this.now();
186
189
  this.robotsCache.set(origin, { robots, fetchedAt });
187
190
  this.robotsStore?.set(origin, body, fetchedAt);
191
+ // robots.txtの取得も先方への1リクエストなので、最終リクエスト時刻に数える。
192
+ // ここを記録しないと、新規ホストの初回だけ「robots.txt取得 → 即座に本文取得」と
193
+ // 連続2リクエストになり、掲げている最小間隔が実際には守られていなかった。
194
+ // 待たずに記録するだけなので、遅くなるのはこの直後の本文取得1回分に限られる。
195
+ this.noteRequest(new URL(robotsUrl).host, fetchedAt);
188
196
  return robots;
189
197
  }
190
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"politeness.js","sourceRoot":"","sources":["../src/politeness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"politeness.js","sourceRoot":"","sources":["../src/politeness.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,kBAAkB,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAiBxD,MAAM,YAAY,GAAG,kBAA0E,CAAC;AAEhG,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;AACpD,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAoDrC,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,iBAAiB;IACX,aAAa,CAAS;IACtB,WAAW,CAAS;IACpB,GAAG,CAAe;IAClB,KAAK,CAAgC;IACrC,KAAK,CAA8B;IACnC,WAAW,CAA0B;IAErC,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnE,8DAA8D;IAC9D,+CAA+C;IAC/C,gDAAgD;IAChD,YAAY;IACK,KAAK,GAAG,IAAI,GAAG,EAAsD,CAAC;IACtE,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3D,YAAY,OAAO,GAAsB,EAAE;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,uBAAuB,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC;QAChE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,UAAoD;QAC3E,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,kBAAkB,CAAC,GAAW;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;YAC1D,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAoD;QAC9E,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAE9D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,aAAa,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,IAAI,OAAO,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE5B,MAAM,QAAQ,CAAC;QACf,IAAI,CAAC;YACH,yDAAyD;YACzD,uDAAuD;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;YACpC,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,UAAU,EAAE,CAAC,uBAAuB,CAAC,CAAC;gBACtC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;YACV,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,iDAAiD;IACzC,WAAW,CAAC,IAAY,EAAE,EAAU;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACK,mBAAmB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,MAAM,IAAI,MAAM;gBAAE,SAAS;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAW;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,GAAW;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,qEAAqE;QACrE,wDAAwD;QACxD,mEAAmE;QACnE,qDAAqD;QACrD,gEAAgE;QAChE,gEAAgE;QAChE,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,+CAA+C;QAC/C,0DAA0D;QAC1D,gDAAgD;QAChD,qDAAqD;QACrD,2CAA2C;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,MAAM,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,MAAM,aAAa,CAAC;QACzC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAChF,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,qDAAqD;YACrD,EAAE;YACF,uDAAuD;YACvD,8CAA8C;YAC9C,iDAAiD;YACjD,2DAA2D;YAC3D,2CAA2C;YAC3C,kCAAkC;YAClC,IAAI,KAAK,YAAY,mBAAmB;gBAAE,MAAM,KAAK,CAAC;YACtD,IAAI,CAAC,CAAC,KAAK,YAAY,eAAe,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,sCAAsC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,6CAA6C;QAC7C,gDAAgD;QAChD,uCAAuC;QACvC,yCAAyC;QACzC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -21,6 +21,8 @@ export interface ScreenshotOptions {
21
21
  /** 解像度スケール(0.5〜1.0)。既定1.0。小さいほど画像サイズ(トークン)が減る。 */
22
22
  scale?: number;
23
23
  timeoutMs?: number;
24
+ /** 別オリジンへ遷移した場合のrobots.txt確認(HTTP層のcheckRobotsと同じ役割)。 */
25
+ checkRobots?: ((url: string) => Promise<void>) | undefined;
24
26
  }
25
27
  export interface ScreenshotTile {
26
28
  geometry: TileGeometry;
@@ -14,6 +14,8 @@ export const DEFAULT_TILE_WIDTH = 1280;
14
14
  export const DEFAULT_TILE_HEIGHT = 1080;
15
15
  /** 無限スクロール等で異常に長いページの撮影を打ち切る上限枚数(トークン予算保護)。 */
16
16
  const MAX_TILES = 10;
17
+ /** 上限枚数に対応する撮影高さ。これを超える分はレンダリングもしない。 */
18
+ const MAX_CAPTURE_HEIGHT = MAX_TILES * DEFAULT_TILE_HEIGHT;
17
19
  /**
18
20
  * ページ寸法から、幅tileWidth・高さtileHeight毎のタイル矩形を計算する(純関数)。
19
21
  * 上から順に敷き詰め、最後のタイルは端数の高さになる。MAX_TILES枚を超える分は切り捨てる。
@@ -52,11 +54,7 @@ export async function captureTiledScreenshot(url, options = {}) {
52
54
  // C1: SSRF/スキーム検証(guardPublicAddress)+リダイレクト再検証込みのナビゲーション。
53
55
  // 改善キュー対応: 同梱ChromiumがERR_HTTP2_PROTOCOL_ERROR系で失敗した場合、システムに
54
56
  // Chromeがあれば1回だけそちらへフォールバックする(openPageAndNavigate参照)。
55
- const { context, page } = await openPageAndNavigate(url, timeoutMs, {
56
- userAgent: USER_AGENT,
57
- viewport: { width, height: DEFAULT_TILE_HEIGHT },
58
- deviceScaleFactor: scale,
59
- });
57
+ const { context, page } = await openPageAndNavigate(url, timeoutMs, { userAgent: USER_AGENT, viewport: { width, height: DEFAULT_TILE_HEIGHT }, deviceScaleFactor: scale }, { checkRobots: options.checkRobots });
60
58
  try {
61
59
  // J8: 撮影前にCookie同意バナー/アプリ誘導オーバーレイを隠す(視覚的な妨げを除く)
62
60
  await hideConsentBanners(page).catch(() => {
@@ -66,9 +64,14 @@ export async function captureTiledScreenshot(url, options = {}) {
66
64
  width: Math.ceil(document.documentElement.scrollWidth),
67
65
  height: Math.ceil(document.documentElement.scrollHeight),
68
66
  }));
69
- const captureHeight = fullPage ? dimensions.height : Math.min(dimensions.height, DEFAULT_TILE_HEIGHT);
67
+ // 撮影自体もMAX_TILES相当の高さで打ち切る。以前は出力タイルだけを10枚に切り詰めており、
68
+ // 無限スクロールのページでは捨てるだけの数万px分をChromiumにレンダリングさせて
69
+ // 巨大なPNGをメモリへ展開していた(切り捨て枚数の判定はページ全高で行うので表示は変わらない)。
70
+ const captureHeight = fullPage ? Math.min(dimensions.height, MAX_CAPTURE_HEIGHT) : Math.min(dimensions.height, DEFAULT_TILE_HEIGHT);
70
71
  const geometries = computeTiles(dimensions.width, captureHeight, width, DEFAULT_TILE_HEIGHT);
71
- const truncated = isTileCaptureTruncated(captureHeight, geometries.length);
72
+ // 切り捨て判定はページ全高で行う(fullPage:falseは利用者が明示した1画面分なので、
73
+ // 上限による切り捨てとは区別してこれまで通りcaptureHeightで判定する)。
74
+ const truncated = isTileCaptureTruncated(fullPage ? dimensions.height : captureHeight, geometries.length);
72
75
  // N2: タイル毎にfullPageスクリーンショットを撮り直すのではなく、1回だけ撮影して
73
76
  // @napi-rs/canvasでタイル領域をクロップする(deviceScaleFactor分、座標をscale倍する)。
74
77
  //
@@ -79,7 +82,12 @@ export async function captureTiledScreenshot(url, options = {}) {
79
82
  // fullPage:false時はビューポート(viewport height=DEFAULT_TILE_HEIGHTで撮影済み)のみを
80
83
  // 実際に撮影する。captureHeight/geometries/crop座標は既にfullPageの値で分岐済みのため、
81
84
  // 1タイル(ビューポート分)のみでも整合する。
82
- const capturedPng = await page.screenshot({ type: "png", fullPage });
85
+ // clipはfullPageと併用する。clip単独だと領域がビューポート内へ黙って切り詰められ、
86
+ // 長いページが1画面分しか撮れなくなる(実機Chromiumで確認: clip単独は1280x1080、
87
+ // fullPage+clipは指定通り1280x10800)。
88
+ const capturedPng = fullPage && dimensions.height > captureHeight
89
+ ? await page.screenshot({ type: "png", fullPage: true, clip: { x: 0, y: 0, width: dimensions.width, height: captureHeight } })
90
+ : await page.screenshot({ type: "png", fullPage });
83
91
  const image = await loadImage(capturedPng);
84
92
  const tiles = geometries.map((geometry) => {
85
93
  const sx = Math.min(Math.round(geometry.x * scale), Math.max(image.width - 1, 0));
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../src/screenshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../src/screenshot.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- export declare const server: McpServer;
2
+ import { McpServer } from "@modelcontextprotocol/server";
3
+ /**
4
+ * ツール3個とプロンプト1個を登録したMCPサーバーインスタンスを1つ組み立てる。
5
+ *
6
+ * モジュールトップレベルのシングルトンにしていないのは、serveStdioがプロトコル世代
7
+ * (2025系 / 2026-07-28)を接続の1通目で判定してから世代ごとのインスタンスをpinする都合上、
8
+ * 1プロセス内でこのファクトリを複数回呼びうるため(同一インスタンスを二度connectすると失敗する)。
9
+ * テストからはこの関数を直接呼んでInMemoryTransportへ繋ぐ。
10
+ */
11
+ export declare function createServer(): McpServer;
4
12
  /** MCP stdioサーバーを起動する。CLI(cli.ts)が引数なし/`serve`サブコマンド時に呼ぶ後方互換経路でもある。 */
5
13
  export declare function runServer(): Promise<void>;
package/dist/server.js CHANGED
@@ -17,133 +17,42 @@
17
17
  */
18
18
  import { realpathSync } from "node:fs";
19
19
  import { fileURLToPath } from "node:url";
20
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
21
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
20
+ import { McpServer } from "@modelcontextprotocol/server";
21
+ import { serveStdio } from "@modelcontextprotocol/server/stdio";
22
22
  import { z } from "zod";
23
23
  import { handleFetchTool, handleScreenshotTool, politeness, registerCoreShutdownHandlers, resolvePackageVersion, } from "./core.js";
24
24
  import { AmenboError } from "./errors.js";
25
25
  import { formatLinksResponse } from "./formatting.js";
26
26
  import { discoverLinks } from "./links.js";
27
- // テスト用export(既存スタイルに合わせた最小のテスト可能化。InMemoryTransport経由の
28
- // MCP progress notifications統合テストでclient.connect()の相手として使う)。
29
- export const server = new McpServer({ name: "amenbo", version: resolvePackageVersion() });
30
27
  /**
31
28
  * MCP progress notifications: リクエストにprogressToken(_meta.progressToken)が付いている
32
29
  * クライアントに対してのみ、進捗メッセージをホストUIへ通知するコールバックを組み立てる。
33
30
  * progressTokenが無い(=進捗通知に対応しない/希望しないクライアント)場合はundefinedを返し、
34
31
  * core.ts側の各通知ポイントは呼び出し自体を行わない(条件分岐のみでオーバーヘッドは実質ゼロ)。
35
32
  *
36
- * sendNotificationはtotalを送らない(処理量が事前に不定なため)。失敗はツール本処理を
33
+ * notifyはtotalを送らない(処理量が事前に不定なため)。失敗はツール本処理を
37
34
  * 壊さないようベストエフォートで握りつぶし、原因のみstderrへ記録する。
38
35
  */
39
- function buildProgressNotifier(extra) {
40
- const progressToken = extra._meta?.progressToken;
36
+ function buildProgressNotifier(ctx) {
37
+ const progressToken = ctx.mcpReq._meta?.progressToken;
41
38
  if (progressToken === undefined)
42
39
  return undefined;
43
40
  let progress = 0;
44
41
  return (message) => {
45
42
  progress += 1;
46
- void extra.sendNotification({ method: "notifications/progress", params: { progressToken, progress, message } }).catch((error) => {
43
+ void ctx.mcpReq.notify({ method: "notifications/progress", params: { progressToken, progress, message } }).catch((error) => {
47
44
  console.error("進捗通知(notifications/progress)の送信に失敗しました:", error);
48
45
  });
49
46
  };
50
47
  }
51
- server.registerTool("fetch", {
52
- title: "Fetch a web page as Markdown",
53
- description: "Fetch a web page (Japanese-web-native) as low-impact, token-efficient Markdown. Built-in robots.txt compliance, rate limiting, and caching. " +
54
- "mode: auto (default; quality score picks Markdown or screenshot) / markdown / outline (heading summary) / screenshot. " +
55
- "Refetching a cached URL returns cache: unchanged, or diff (changed sections only), to save tokens. PDF URLs are handled automatically.",
56
- inputSchema: {
57
- url: z.string().url().describe("Target URL (http/https only; PDF supported)"),
58
- mode: z.enum(["auto", "markdown", "outline", "screenshot"]).optional().describe("Default: auto"),
59
- selector: z.string().optional().describe("CSS selector to narrow the content"),
60
- section: z.string().optional().describe("Section ID obtained from outline mode; returns only that section's Markdown"),
61
- page: z.number().int().positive().optional().describe("Page number (default 1)"),
62
- max_tokens: z.number().int().positive().optional().describe("Approximate token budget per page (default 8000)"),
63
- force_full: z.boolean().optional().describe("Default false. If true, disables diff responses (unchanged/diff) and boilerplate-block removal, always returning the full content"),
64
- },
65
- annotations: {
66
- readOnlyHint: true,
67
- openWorldHint: true,
68
- },
69
- }, async ({ url, mode, selector, section, page, max_tokens: maxTokens, force_full: forceFull }, extra) => {
70
- try {
71
- const onProgress = buildProgressNotifier(extra);
72
- const content = await handleFetchTool({ url, mode, selector, section, page, max_tokens: maxTokens, force_full: forceFull, onProgress });
73
- return { content };
74
- }
75
- catch (error) {
76
- const message = error instanceof AmenboError ? error.message : `予期しないエラーが発生しました: ${String(error)}`;
77
- if (!(error instanceof AmenboError)) {
78
- console.error(error);
79
- }
80
- return { content: [{ type: "text", text: message }], isError: true };
81
- }
82
- });
83
- server.registerTool("links", {
84
- title: "List links from a page (sitemap/RSS-first)",
85
- description: "Low-impact link discovery: prefers sitemap.xml / RSS / Atom feeds when available, otherwise extracts in-page links.",
86
- inputSchema: {
87
- url: z.string().url().describe("Starting URL"),
88
- filter: z.string().optional().describe("Substring match against URL/link text, or a glob using *"),
89
- },
90
- annotations: {
91
- readOnlyHint: true,
92
- openWorldHint: true,
93
- },
94
- }, async ({ url, filter }, extra) => {
95
- try {
96
- const onProgress = buildProgressNotifier(extra);
97
- const result = await discoverLinks(url, politeness, { ...(filter ? { filter } : {}), onProgress });
98
- return { content: [{ type: "text", text: formatLinksResponse(url, result) }] };
99
- }
100
- catch (error) {
101
- const message = error instanceof AmenboError ? error.message : `予期しないエラーが発生しました: ${String(error)}`;
102
- if (!(error instanceof AmenboError)) {
103
- console.error(error);
104
- }
105
- return { content: [{ type: "text", text: message }], isError: true };
106
- }
107
- });
108
- server.registerTool("screenshot", {
109
- title: "Capture a tiled screenshot of a web page",
110
- description: "For explicit visual inspection. Renders the page with a headless browser and returns tiled PNG screenshots. Built-in robots.txt compliance, rate limiting, and caching.",
111
- inputSchema: {
112
- url: z.string().url().describe("Target URL (http/https only)"),
113
- fullPage: z.boolean().optional().describe("Default true. If false, captures only the first viewport (1 tile)"),
114
- width: z.number().int().positive().optional().describe("Tile width in px (default 1280)"),
115
- scale: z.number().min(0.5).max(1.0).optional().describe("Resolution scale (0.5-1.0, default 1.0); lower reduces image tokens"),
116
- },
117
- annotations: {
118
- readOnlyHint: true,
119
- openWorldHint: true,
120
- },
121
- }, async ({ url, fullPage, width, scale }, extra) => {
122
- try {
123
- const onProgress = buildProgressNotifier(extra);
124
- const content = await handleScreenshotTool({ url, fullPage, width, scale, onProgress });
125
- return { content };
126
- }
127
- catch (error) {
128
- const message = error instanceof AmenboError ? error.message : `予期しないエラーが発生しました: ${String(error)}`;
129
- if (!(error instanceof AmenboError)) {
130
- console.error(error);
131
- }
132
- return { content: [{ type: "text", text: message }], isError: true };
133
- }
134
- });
135
- // MCPプロトコル面は既存ツールのtitle/description同様に英語固定のため、この定数は
136
- // README.en.md の「推奨プロンプト」ブロックと一言一句同期を保つこと(完全一致を
137
- // tests/serverUsagePrompt.test.ts が検証する)。README.md の日本語ブロックは対応する訳文で、
138
- // 内容の連動は人が保つ。README側は導入者がコピペで使う独立したドキュメントとして
139
- // 存在する必要があるため、単一ソース化(README側からこの定数を読み込む等)はしていない。
48
+ /** MCPプロトコル面は英語固定のため、ツールのtitle/description同様この定数も英語で書く。 */
140
49
  const USAGE_PROMPT_TEXT = `## Use amenbo for web fetching
141
50
 
142
51
  - Fetch pages with \`fetch\` (default mode \`auto\`). For pages that look long or where only part
143
52
  is needed, first check headings and per-section token counts with \`mode: "outline"\`,
144
53
  then fetch only the needed sections via \`section\`
145
54
  - Getting \`unchanged\` / \`diff\` when refetching the same URL is normal (no change / changed
146
- sections only). Use \`force_full: true\` only when the full text is required
55
+ sections only). Use \`force_full: true\` only when you need the whole content again instead of a diff
147
56
  - When looking for pages within a site, don't guess URLs — enumerate them with \`links\`
148
57
  (narrow down with \`filter\`)
149
58
  - In environments with a shell, for long pages you only want to keyword-search or for bulk
@@ -157,19 +66,140 @@ const USAGE_PROMPT_TEXT = `## Use amenbo for web fetching
157
66
  \`scale: 0.5\` or so reduces image tokens
158
67
  - Fetch failures due to robots.txt denial or anti-bot measures are by design (no circumvention).
159
68
  Report failures to the user as-is`;
160
- server.registerPrompt("usage", {
161
- title: "How to use amenbo efficiently",
162
- description: "Usage conventions for token-efficient, low-impact fetching (progressive disclosure, diff refetch, links).",
163
- }, () => ({
164
- messages: [{ role: "user", content: { type: "text", text: USAGE_PROMPT_TEXT } }],
165
- }));
69
+ // USAGE_PROMPT_TEXTは README.en.md の「推奨プロンプト」ブロックと一言一句同期を保つこと(完全一致を
70
+ // tests/serverUsagePrompt.test.ts が検証する)。README.md の日本語ブロックは対応する訳文で、
71
+ // 内容の連動は人が保つ。README側は導入者がコピペで使う独立したドキュメントとして
72
+ // 存在する必要があるため、単一ソース化(README側からこの定数を読み込む等)はしていない。
73
+ /**
74
+ * ツール3個とプロンプト1個を登録したMCPサーバーインスタンスを1つ組み立てる。
75
+ *
76
+ * モジュールトップレベルのシングルトンにしていないのは、serveStdioがプロトコル世代
77
+ * (2025系 / 2026-07-28)を接続の1通目で判定してから世代ごとのインスタンスをpinする都合上、
78
+ * 1プロセス内でこのファクトリを複数回呼びうるため(同一インスタンスを二度connectすると失敗する)。
79
+ * テストからはこの関数を直接呼んでInMemoryTransportへ繋ぐ。
80
+ */
81
+ export function createServer() {
82
+ const server = new McpServer({ name: "amenbo", version: resolvePackageVersion() });
83
+ server.registerTool("fetch", {
84
+ title: "Fetch a web page as Markdown",
85
+ description: "Fetch a web page (Japanese-web-native) as low-impact, token-efficient Markdown. Built-in robots.txt compliance, rate limiting, and caching. " +
86
+ "mode: auto (default; quality score picks Markdown or screenshot) / markdown / outline (heading summary) / screenshot. " +
87
+ "Refetching a cached URL returns cache: unchanged, or diff (changed sections only), to save tokens. PDF URLs are handled automatically.",
88
+ inputSchema: z.object({
89
+ url: z.string().url().describe("Target URL (http/https only; PDF supported)"),
90
+ mode: z.enum(["auto", "markdown", "outline", "screenshot"]).optional().describe("Default: auto"),
91
+ selector: z.string().optional().describe("CSS selector to narrow the content"),
92
+ section: z.string().optional().describe("Section ID obtained from outline mode; returns only that section's Markdown"),
93
+ page: z.number().int().positive().optional().describe("Page number (default 1)"),
94
+ max_tokens: z.number().int().positive().optional().describe("Approximate token budget per page (default 8000)"),
95
+ force_full: z.boolean().optional().describe("Default false. If true, disables diff responses (unchanged/diff) and boilerplate-block removal (pagination by max_tokens still applies)"),
96
+ }),
97
+ annotations: {
98
+ readOnlyHint: true,
99
+ openWorldHint: true,
100
+ },
101
+ }, async ({ url, mode, selector, section, page, max_tokens: maxTokens, force_full: forceFull }, ctx) => {
102
+ try {
103
+ const onProgress = buildProgressNotifier(ctx);
104
+ const content = await handleFetchTool({ url, mode, selector, section, page, max_tokens: maxTokens, force_full: forceFull, onProgress });
105
+ return { content };
106
+ }
107
+ catch (error) {
108
+ const message = error instanceof AmenboError ? error.message : `予期しないエラーが発生しました: ${String(error)}`;
109
+ if (!(error instanceof AmenboError)) {
110
+ console.error(error);
111
+ }
112
+ return { content: [{ type: "text", text: message }], isError: true };
113
+ }
114
+ });
115
+ server.registerTool("links", {
116
+ title: "List links from a page (sitemap/RSS-first)",
117
+ description: "Low-impact link discovery: prefers sitemap.xml / RSS / Atom feeds when available, otherwise extracts in-page links.",
118
+ inputSchema: z.object({
119
+ url: z.string().url().describe("Starting URL"),
120
+ filter: z.string().optional().describe("Substring match against URL/link text, or a glob using *"),
121
+ }),
122
+ annotations: {
123
+ readOnlyHint: true,
124
+ openWorldHint: true,
125
+ },
126
+ }, async ({ url, filter }, ctx) => {
127
+ try {
128
+ const onProgress = buildProgressNotifier(ctx);
129
+ const result = await discoverLinks(url, politeness, { ...(filter ? { filter } : {}), onProgress });
130
+ return { content: [{ type: "text", text: formatLinksResponse(url, result) }] };
131
+ }
132
+ catch (error) {
133
+ const message = error instanceof AmenboError ? error.message : `予期しないエラーが発生しました: ${String(error)}`;
134
+ if (!(error instanceof AmenboError)) {
135
+ console.error(error);
136
+ }
137
+ return { content: [{ type: "text", text: message }], isError: true };
138
+ }
139
+ });
140
+ server.registerTool("screenshot", {
141
+ title: "Capture a tiled screenshot of a web page",
142
+ description: "For explicit visual inspection. Renders the page with a headless browser and returns tiled PNG screenshots. Built-in robots.txt compliance, rate limiting, and caching.",
143
+ inputSchema: z.object({
144
+ url: z.string().url().describe("Target URL (http/https only)"),
145
+ fullPage: z.boolean().optional().describe("Default true. If false, captures only the first viewport (1 tile)"),
146
+ width: z.number().int().positive().optional().describe("Tile width in px (default 1280)"),
147
+ scale: z.number().min(0.5).max(1.0).optional().describe("Resolution scale (0.5-1.0, default 1.0); lower reduces image tokens"),
148
+ }),
149
+ annotations: {
150
+ readOnlyHint: true,
151
+ openWorldHint: true,
152
+ },
153
+ }, async ({ url, fullPage, width, scale }, ctx) => {
154
+ try {
155
+ const onProgress = buildProgressNotifier(ctx);
156
+ const content = await handleScreenshotTool({ url, fullPage, width, scale, onProgress });
157
+ return { content };
158
+ }
159
+ catch (error) {
160
+ const message = error instanceof AmenboError ? error.message : `予期しないエラーが発生しました: ${String(error)}`;
161
+ if (!(error instanceof AmenboError)) {
162
+ console.error(error);
163
+ }
164
+ return { content: [{ type: "text", text: message }], isError: true };
165
+ }
166
+ });
167
+ server.registerPrompt("usage", {
168
+ title: "How to use amenbo efficiently",
169
+ description: "Usage conventions for token-efficient, low-impact fetching (progressive disclosure, diff refetch, links).",
170
+ }, () => ({
171
+ messages: [{ role: "user", content: { type: "text", text: USAGE_PROMPT_TEXT } }],
172
+ }));
173
+ return server;
174
+ }
166
175
  /** MCP stdioサーバーを起動する。CLI(cli.ts)が引数なし/`serve`サブコマンド時に呼ぶ後方互換経路でもある。 */
167
176
  export async function runServer() {
168
177
  // レビュー指摘対応: exit/SIGINT/SIGTERMハンドラ(core.ts)はサーバー常駐プロセスでのみ
169
178
  // 必要なため、importするだけで走るモジュールトップレベルではなくここで明示的に登録する。
170
179
  registerCoreShutdownHandlers();
171
- const transport = new StdioServerTransport();
172
- await server.connect(transport);
180
+ serveStdio(() => {
181
+ // ファクトリの失敗をここで致命扱いにしているのは、serveStdioが同期関数で
182
+ // 例外をonerrorへ流すだけのため、放置すると「全リクエストが内部エラーを返し続けるのに
183
+ // 終了コード0で生き続けるプロセス」になるから。組み立てに失敗したサーバーは何も返せない。
184
+ try {
185
+ return createServer();
186
+ }
187
+ catch (error) {
188
+ console.error("amenboサーバーの初期化に失敗しました:", error);
189
+ process.exit(1);
190
+ }
191
+ }, {
192
+ // 既定値と同じだが明示する: 'reject'にすると initialize で口を開ける2025系クライアント
193
+ // (現行のClaude Desktop/Cline等)が繋がらなくなるため、後方互換を捨てない判断をコードに残す。
194
+ legacy: "serve",
195
+ // ここでプロセスを落とさないのは、onerrorが単発の送信失敗と接続レベルの障害を
196
+ // 区別せず同じ口へ流すため(落とすと送信失敗ごときで常駐サーバーを巻き添えにする)。
197
+ // 起動不能の検出は上のファクトリ側が担う。トランスポート自体のstart失敗だけは
198
+ // SDKのAPI上ここへしか現れず切り分けられないため、記録に留める。
199
+ onerror: (error) => {
200
+ console.error("MCP stdio接続でエラーが発生しました:", error);
201
+ },
202
+ });
173
203
  }
174
204
  /**
175
205
  * このモジュールが直接実行された(node dist/server.js / tsx src/server.ts / binエントリ経由)場合のみ
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}