amenbo 0.1.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.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/dist/adapters/index.d.ts +22 -0
  4. package/dist/adapters/index.js +51 -0
  5. package/dist/adapters/index.js.map +1 -0
  6. package/dist/adapters/types.d.ts +21 -0
  7. package/dist/adapters/types.js +2 -0
  8. package/dist/adapters/types.js.map +1 -0
  9. package/dist/cache.d.ts +90 -0
  10. package/dist/cache.js +286 -0
  11. package/dist/cache.js.map +1 -0
  12. package/dist/cli.d.ts +46 -0
  13. package/dist/cli.js +327 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/core.d.ts +78 -0
  16. package/dist/core.js +649 -0
  17. package/dist/core.js.map +1 -0
  18. package/dist/diff.d.ts +20 -0
  19. package/dist/diff.js +44 -0
  20. package/dist/diff.js.map +1 -0
  21. package/dist/errors.d.ts +97 -0
  22. package/dist/errors.js +209 -0
  23. package/dist/errors.js.map +1 -0
  24. package/dist/extract/dataSources.d.ts +10 -0
  25. package/dist/extract/dataSources.js +115 -0
  26. package/dist/extract/dataSources.js.map +1 -0
  27. package/dist/extract/geometry.d.ts +63 -0
  28. package/dist/extract/geometry.js +77 -0
  29. package/dist/extract/geometry.js.map +1 -0
  30. package/dist/extract/markdown.d.ts +24 -0
  31. package/dist/extract/markdown.js +221 -0
  32. package/dist/extract/markdown.js.map +1 -0
  33. package/dist/extract/outline.d.ts +33 -0
  34. package/dist/extract/outline.js +128 -0
  35. package/dist/extract/outline.js.map +1 -0
  36. package/dist/extract/pdf.d.ts +22 -0
  37. package/dist/extract/pdf.js +95 -0
  38. package/dist/extract/pdf.js.map +1 -0
  39. package/dist/extract/preview.d.ts +19 -0
  40. package/dist/extract/preview.js +94 -0
  41. package/dist/extract/preview.js.map +1 -0
  42. package/dist/extract/pruning.d.ts +61 -0
  43. package/dist/extract/pruning.js +101 -0
  44. package/dist/extract/pruning.js.map +1 -0
  45. package/dist/extract/qualityScore.d.ts +67 -0
  46. package/dist/extract/qualityScore.js +98 -0
  47. package/dist/extract/qualityScore.js.map +1 -0
  48. package/dist/fetcher/browser.d.ts +85 -0
  49. package/dist/fetcher/browser.js +343 -0
  50. package/dist/fetcher/browser.js.map +1 -0
  51. package/dist/fetcher/http.d.ts +105 -0
  52. package/dist/fetcher/http.js +538 -0
  53. package/dist/fetcher/http.js.map +1 -0
  54. package/dist/fetcher/index.d.ts +41 -0
  55. package/dist/fetcher/index.js +92 -0
  56. package/dist/fetcher/index.js.map +1 -0
  57. package/dist/jp/consentBanner.d.ts +27 -0
  58. package/dist/jp/consentBanner.js +48 -0
  59. package/dist/jp/consentBanner.js.map +1 -0
  60. package/dist/jp/normalize.d.ts +30 -0
  61. package/dist/jp/normalize.js +65 -0
  62. package/dist/jp/normalize.js.map +1 -0
  63. package/dist/links.d.ts +20 -0
  64. package/dist/links.js +223 -0
  65. package/dist/links.js.map +1 -0
  66. package/dist/politeness.d.ts +66 -0
  67. package/dist/politeness.js +170 -0
  68. package/dist/politeness.js.map +1 -0
  69. package/dist/screenshot.d.ts +38 -0
  70. package/dist/screenshot.js +90 -0
  71. package/dist/screenshot.js.map +1 -0
  72. package/dist/server.d.ts +3 -0
  73. package/dist/server.js +111 -0
  74. package/dist/server.js.map +1 -0
  75. package/dist/templateLearning.d.ts +11 -0
  76. package/dist/templateLearning.js +42 -0
  77. package/dist/templateLearning.js.map +1 -0
  78. package/dist/tokens.d.ts +47 -0
  79. package/dist/tokens.js +141 -0
  80. package/dist/tokens.js.map +1 -0
  81. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/diff.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ export type SectionDiffType = "added" | "removed" | "changed";
2
+ export interface SectionDiff {
3
+ type: SectionDiffType;
4
+ level: number;
5
+ heading: string;
6
+ /** added/changed時の新しいMarkdown内容(見出し行を含む)。removed時は空文字。 */
7
+ content: string;
8
+ }
9
+ export interface DiffResult {
10
+ /** 差分として報告する節一覧(内容が同一の節は含まない)。 */
11
+ sections: SectionDiff[];
12
+ /**
13
+ * true: 旧新間で内容が完全一致する節が1つも無い(実質的に全面書き換え)。
14
+ * 呼び出し側はこの場合、差分応答ではなく通常の全文応答へフォールバックすべき
15
+ * (plan.md「全節変更なら通常応答にフォールバック」)。
16
+ */
17
+ allSectionsChanged: boolean;
18
+ }
19
+ /** 旧Markdownと新Markdownを節単位(見出しテキスト+レベルをキー)で比較する。 */
20
+ export declare function diffMarkdown(oldMarkdown: string, newMarkdown: string): DiffResult;
package/dist/diff.js ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * diff.ts — §3-3 差分応答。outline.tsの節分割(splitSections)を再利用し、
3
+ * 旧Markdownと新Markdownを見出しテキスト単位で比較する。
4
+ *
5
+ * 設計判断: 節の対応付けはsection ID(連番)ではなく「見出しレベル+見出しテキスト」を
6
+ * キーにする。IDは出現順の連番であり、節の追加/削除で後続IDが全てズレるため、
7
+ * 位置ベースの比較では「たまたま同じ位置にある別内容」を誤って「変更」と判定してしまう。
8
+ * 見出しテキストはページ改訂を跨いでも比較的安定した識別子として扱えるため、これをキーにする。
9
+ */
10
+ import { splitSections } from "./extract/outline.js";
11
+ function sectionKey(section) {
12
+ return `${section.level}::${section.heading}`;
13
+ }
14
+ /** 旧Markdownと新Markdownを節単位(見出しテキスト+レベルをキー)で比較する。 */
15
+ export function diffMarkdown(oldMarkdown, newMarkdown) {
16
+ const oldSections = splitSections(oldMarkdown);
17
+ const newSections = splitSections(newMarkdown);
18
+ const oldByKey = new Map(oldSections.map((section) => [sectionKey(section), section]));
19
+ const newKeys = new Set(newSections.map((section) => sectionKey(section)));
20
+ const sections = [];
21
+ let unchangedCount = 0;
22
+ for (const section of newSections) {
23
+ const previous = oldByKey.get(sectionKey(section));
24
+ if (!previous) {
25
+ sections.push({ type: "added", level: section.level, heading: section.heading, content: section.content });
26
+ }
27
+ else if (previous.ownContent !== section.ownContent) {
28
+ // 比較にはownContent(子見出しを含まない直接の内容)を使う。contentは子節の変更でも
29
+ // 変わってしまうため、子の変更が親にも伝播して誤ってchanged扱いになるのを防ぐ。
30
+ sections.push({ type: "changed", level: section.level, heading: section.heading, content: section.content });
31
+ }
32
+ else {
33
+ unchangedCount++;
34
+ }
35
+ }
36
+ for (const section of oldSections) {
37
+ if (!newKeys.has(sectionKey(section))) {
38
+ sections.push({ type: "removed", level: section.level, heading: section.heading, content: "" });
39
+ }
40
+ }
41
+ const allSectionsChanged = unchangedCount === 0 && (oldSections.length > 0 || newSections.length > 0);
42
+ return { sections, allSectionsChanged };
43
+ }
44
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAuB3E,SAAS,UAAU,CAAC,OAAmD;IACrE,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,WAAmB;IACnE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7G,CAAC;aAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;YACtD,oDAAoD;YACpD,6CAA6C;YAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/G,CAAC;aAAM,CAAC;YACN,cAAc,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,cAAc,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtG,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * amenbo の型付きエラー階層。
3
+ *
4
+ * 方針: エラーは握り潰さず、原因が一目で分かるメッセージ + 構造化フィールドを持たせる。
5
+ * server.ts はこれらの型で catch し、MCP エラーメッセージへ変換する。
6
+ */
7
+ /** amenbo が投げる全エラーの基底クラス。 */
8
+ export declare abstract class AmenboError extends Error {
9
+ /** エラー種別を識別する安定した文字列コード(MCPクライアント側でのハンドリング用)。 */
10
+ abstract readonly code: string;
11
+ constructor(message: string, options?: {
12
+ cause?: unknown;
13
+ });
14
+ }
15
+ /** HTTP/ブラウザ取得がタイムアウトした。 */
16
+ export declare class FetchTimeoutError extends AmenboError {
17
+ readonly url: string;
18
+ readonly timeoutMs: number;
19
+ readonly code = "FETCH_TIMEOUT";
20
+ constructor(url: string, timeoutMs: number);
21
+ }
22
+ /** robots.txt によりアクセスが拒否された。 */
23
+ export declare class RobotsDeniedError extends AmenboError {
24
+ readonly url: string;
25
+ readonly code = "ROBOTS_DENIED";
26
+ constructor(url: string);
27
+ }
28
+ /** SSRF対策: private/loopback/link-local アドレスへのアクセスを拒否した。 */
29
+ export declare class PrivateAddressError extends AmenboError {
30
+ readonly url: string;
31
+ readonly address: string;
32
+ readonly code = "PRIVATE_ADDRESS_DENIED";
33
+ constructor(url: string, address: string);
34
+ }
35
+ /** URLの形式が不正、またはサポート対象外のスキームである。 */
36
+ export declare class InvalidUrlError extends AmenboError {
37
+ readonly url: string;
38
+ readonly code = "INVALID_URL";
39
+ constructor(url: string, reason: string);
40
+ }
41
+ /** コンテンツタイプがサポート対象外(バイナリ・非HTML等)。 */
42
+ export declare class UnsupportedContentError extends AmenboError {
43
+ readonly url: string;
44
+ readonly contentType: string;
45
+ readonly code = "UNSUPPORTED_CONTENT";
46
+ constructor(url: string, contentType: string);
47
+ }
48
+ /** HTTP応答がエラーステータスを返した。 */
49
+ export declare class HttpStatusError extends AmenboError {
50
+ readonly url: string;
51
+ readonly status: number;
52
+ readonly code = "HTTP_STATUS_ERROR";
53
+ constructor(url: string, status: number, statusText: string);
54
+ }
55
+ /** Playwrightブラウザの起動・操作に失敗した。 */
56
+ export declare class BrowserLaunchError extends AmenboError {
57
+ readonly code = "BROWSER_LAUNCH_FAILED";
58
+ constructor(message: string, options?: {
59
+ cause?: unknown;
60
+ });
61
+ }
62
+ /** Readability/Turndown等による本文抽出に失敗した。 */
63
+ export declare class ExtractionError extends AmenboError {
64
+ readonly url: string;
65
+ readonly code = "EXTRACTION_FAILED";
66
+ constructor(url: string, reason: string);
67
+ }
68
+ /** outlineモードで得られたsection IDが、対象ページの見出し構成上に見つからなかった。 */
69
+ export declare class SectionNotFoundError extends AmenboError {
70
+ readonly url: string;
71
+ readonly sectionId: string;
72
+ readonly code = "SECTION_NOT_FOUND";
73
+ constructor(url: string, sectionId: string);
74
+ }
75
+ /** 機能A: undiciのcauseチェーンから分類したネットワークエラーの種別。 */
76
+ export type NetworkErrorKind = "dns" | "tls" | "connection" | "unknown";
77
+ /**
78
+ * ネットワークレベルの接続失敗(DNS解決失敗/TLSハンドシェイク拒否/接続拒否等)。
79
+ * undiciがfetch失敗時に生成する `TypeError: fetch failed` は原因(cause)チェーンの奥に
80
+ * 実際のNode/OpenSSLエラーコードを持つため、それを辿って分類する(fromCause参照)。
81
+ */
82
+ export declare class NetworkError extends AmenboError {
83
+ readonly url: string;
84
+ readonly kind: NetworkErrorKind;
85
+ readonly code = "NETWORK_ERROR";
86
+ private constructor();
87
+ /** fetch失敗時のcause(生のTypeError等)からdns/tls/connection/unknownを分類して生成する。 */
88
+ static fromCause(url: string, cause: unknown): NetworkError;
89
+ }
90
+ /** ダウンロード対象(PDF等)がサイズ上限を超えている。 */
91
+ export declare class PayloadTooLargeError extends AmenboError {
92
+ readonly url: string;
93
+ readonly byteLength: number;
94
+ readonly maxBytes: number;
95
+ readonly code = "PAYLOAD_TOO_LARGE";
96
+ constructor(url: string, byteLength: number, maxBytes: number);
97
+ }
package/dist/errors.js ADDED
@@ -0,0 +1,209 @@
1
+ /**
2
+ * amenbo の型付きエラー階層。
3
+ *
4
+ * 方針: エラーは握り潰さず、原因が一目で分かるメッセージ + 構造化フィールドを持たせる。
5
+ * server.ts はこれらの型で catch し、MCP エラーメッセージへ変換する。
6
+ */
7
+ /** amenbo が投げる全エラーの基底クラス。 */
8
+ export class AmenboError extends Error {
9
+ constructor(message, options) {
10
+ super(message, options);
11
+ this.name = new.target.name;
12
+ }
13
+ }
14
+ /** HTTP/ブラウザ取得がタイムアウトした。 */
15
+ export class FetchTimeoutError extends AmenboError {
16
+ url;
17
+ timeoutMs;
18
+ code = "FETCH_TIMEOUT";
19
+ constructor(url, timeoutMs) {
20
+ super(`取得がタイムアウトしました(${timeoutMs}ms): ${url}`);
21
+ this.url = url;
22
+ this.timeoutMs = timeoutMs;
23
+ }
24
+ }
25
+ /** robots.txt によりアクセスが拒否された。 */
26
+ export class RobotsDeniedError extends AmenboError {
27
+ url;
28
+ code = "ROBOTS_DENIED";
29
+ constructor(url) {
30
+ super(`robots.txt によりアクセスが拒否されています: ${url}`);
31
+ this.url = url;
32
+ }
33
+ }
34
+ /** SSRF対策: private/loopback/link-local アドレスへのアクセスを拒否した。 */
35
+ export class PrivateAddressError extends AmenboError {
36
+ url;
37
+ address;
38
+ code = "PRIVATE_ADDRESS_DENIED";
39
+ constructor(url, address) {
40
+ super(`プライベート/ループバックアドレスへのアクセスは拒否されます: ${url} -> ${address}`);
41
+ this.url = url;
42
+ this.address = address;
43
+ }
44
+ }
45
+ /** URLの形式が不正、またはサポート対象外のスキームである。 */
46
+ export class InvalidUrlError extends AmenboError {
47
+ url;
48
+ code = "INVALID_URL";
49
+ constructor(url, reason) {
50
+ super(`不正なURLです: ${url} (${reason})`);
51
+ this.url = url;
52
+ }
53
+ }
54
+ /** コンテンツタイプがサポート対象外(バイナリ・非HTML等)。 */
55
+ export class UnsupportedContentError extends AmenboError {
56
+ url;
57
+ contentType;
58
+ code = "UNSUPPORTED_CONTENT";
59
+ constructor(url, contentType) {
60
+ super(`サポート対象外のコンテンツタイプです: ${url} (${contentType})`);
61
+ this.url = url;
62
+ this.contentType = contentType;
63
+ }
64
+ }
65
+ /** HTTP応答がエラーステータスを返した。 */
66
+ export class HttpStatusError extends AmenboError {
67
+ url;
68
+ status;
69
+ code = "HTTP_STATUS_ERROR";
70
+ constructor(url, status, statusText) {
71
+ super(`HTTPエラー(${status} ${statusText}): ${url}`);
72
+ this.url = url;
73
+ this.status = status;
74
+ }
75
+ }
76
+ /** Playwrightブラウザの起動・操作に失敗した。 */
77
+ export class BrowserLaunchError extends AmenboError {
78
+ code = "BROWSER_LAUNCH_FAILED";
79
+ constructor(message, options) {
80
+ super(`ブラウザ起動/操作に失敗しました: ${message}`, options);
81
+ }
82
+ }
83
+ /** Readability/Turndown等による本文抽出に失敗した。 */
84
+ export class ExtractionError extends AmenboError {
85
+ url;
86
+ code = "EXTRACTION_FAILED";
87
+ constructor(url, reason) {
88
+ super(`本文抽出に失敗しました: ${url} (${reason})`);
89
+ this.url = url;
90
+ }
91
+ }
92
+ /** outlineモードで得られたsection IDが、対象ページの見出し構成上に見つからなかった。 */
93
+ export class SectionNotFoundError extends AmenboError {
94
+ url;
95
+ sectionId;
96
+ code = "SECTION_NOT_FOUND";
97
+ constructor(url, sectionId) {
98
+ super(`指定されたsectionが見つかりません: ${url} (section=${sectionId})`);
99
+ this.url = url;
100
+ this.sectionId = sectionId;
101
+ }
102
+ }
103
+ const NETWORK_ERROR_KIND_LABELS = {
104
+ dns: "DNS解決失敗",
105
+ tls: "TLS/証明書エラー",
106
+ connection: "接続拒否/リセット",
107
+ };
108
+ /** tls/connection時のみ付与するヒント(dns失敗はブラウザ経由でも解決しないため付けない)。 */
109
+ const NETWORK_ERROR_SCREENSHOT_HINT = " — サイト側がボットアクセスを遮断している可能性があります。mode: screenshot(ブラウザ経由)で再試行すると通る場合があります";
110
+ const DNS_ERROR_CODES = new Set(["ENOTFOUND", "EAI_AGAIN"]);
111
+ const CONNECTION_ERROR_CODES = new Set([
112
+ "ECONNREFUSED",
113
+ "ECONNRESET",
114
+ "ETIMEDOUT",
115
+ "EHOSTUNREACH",
116
+ "ENETUNREACH",
117
+ "EPIPE",
118
+ "ECONNABORTED",
119
+ ]);
120
+ /** TLS関連のNode/OpenSSLエラーコード判定(CERT_接頭辞・ERR_TLS_接頭辞・代表的な証明書エラー名)。 */
121
+ function isTlsErrorCode(code) {
122
+ return (code.startsWith("CERT_") ||
123
+ code.startsWith("ERR_TLS_") ||
124
+ code === "DEPTH_ZERO_SELF_SIGNED_CERT" ||
125
+ code === "UNABLE_TO_VERIFY_LEAF_SIGNATURE" ||
126
+ code === "SELF_SIGNED_CERT_IN_CHAIN" ||
127
+ code === "UNABLE_TO_GET_ISSUER_CERT_LOCALLY" ||
128
+ code === "HOSTNAME_MISMATCH");
129
+ }
130
+ /**
131
+ * HTTP/2レベルのエラーコード判定(ERR_HTTP2_接頭辞)。実機検証でボットブロック時に
132
+ * NGHTTP2_INTERNAL_ERROR(ERR_HTTP2_STREAM_ERROR等)で失敗するケースを確認しており、
133
+ * これはTLS拒否と同様「ブラウザ経由(mode: screenshot)なら通る」典型ケースのためconnection扱いにする。
134
+ */
135
+ function isHttp2ErrorCode(code) {
136
+ return code.startsWith("ERR_HTTP2_");
137
+ }
138
+ function classifyNetworkErrorCode(code) {
139
+ if (DNS_ERROR_CODES.has(code))
140
+ return "dns";
141
+ if (isTlsErrorCode(code))
142
+ return "tls";
143
+ if (CONNECTION_ERROR_CODES.has(code) || isHttp2ErrorCode(code))
144
+ return "connection";
145
+ return null;
146
+ }
147
+ /** Error.cause チェーンを辿ってノード列(自分自身含む)を取り出す(循環/深すぎる場合に備え深さ上限あり)。 */
148
+ function walkCauseChain(error, maxDepth = 5) {
149
+ const nodes = [];
150
+ let current = error;
151
+ for (let i = 0; i < maxDepth && current !== null && typeof current === "object"; i++) {
152
+ nodes.push(current);
153
+ current = current.cause;
154
+ }
155
+ return nodes;
156
+ }
157
+ function buildNetworkErrorMessage(url, kind, rawMessage) {
158
+ const detail = kind === "unknown" ? rawMessage : NETWORK_ERROR_KIND_LABELS[kind];
159
+ const hint = kind === "tls" || kind === "connection" ? NETWORK_ERROR_SCREENSHOT_HINT : "";
160
+ return `接続に失敗しました(${detail}): ${url}${hint}`;
161
+ }
162
+ /**
163
+ * ネットワークレベルの接続失敗(DNS解決失敗/TLSハンドシェイク拒否/接続拒否等)。
164
+ * undiciがfetch失敗時に生成する `TypeError: fetch failed` は原因(cause)チェーンの奥に
165
+ * 実際のNode/OpenSSLエラーコードを持つため、それを辿って分類する(fromCause参照)。
166
+ */
167
+ export class NetworkError extends AmenboError {
168
+ url;
169
+ kind;
170
+ code = "NETWORK_ERROR";
171
+ constructor(url, kind, message, options) {
172
+ super(message, options);
173
+ this.url = url;
174
+ this.kind = kind;
175
+ }
176
+ /** fetch失敗時のcause(生のTypeError等)からdns/tls/connection/unknownを分類して生成する。 */
177
+ static fromCause(url, cause) {
178
+ const nodes = walkCauseChain(cause);
179
+ for (const node of nodes) {
180
+ if (typeof node.code === "string") {
181
+ const kind = classifyNetworkErrorCode(node.code);
182
+ if (kind) {
183
+ return new NetworkError(url, kind, buildNetworkErrorMessage(url, kind, node.code), { cause });
184
+ }
185
+ }
186
+ }
187
+ // unknown分類時は原因チェーンの最も奥(最も具体的な原因)のメッセージを優先して保持する
188
+ const deepestMessage = [...nodes]
189
+ .reverse()
190
+ .map((node) => node.message)
191
+ .find((message) => typeof message === "string");
192
+ const rawMessage = deepestMessage ?? String(cause);
193
+ return new NetworkError(url, "unknown", buildNetworkErrorMessage(url, "unknown", rawMessage), { cause });
194
+ }
195
+ }
196
+ /** ダウンロード対象(PDF等)がサイズ上限を超えている。 */
197
+ export class PayloadTooLargeError extends AmenboError {
198
+ url;
199
+ byteLength;
200
+ maxBytes;
201
+ code = "PAYLOAD_TOO_LARGE";
202
+ constructor(url, byteLength, maxBytes) {
203
+ super(`サイズ上限(${maxBytes}バイト)を超えています: ${url} (${byteLength}バイト)`);
204
+ this.url = url;
205
+ this.byteLength = byteLength;
206
+ this.maxBytes = maxBytes;
207
+ }
208
+ }
209
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * HTMLから構造化データっぽいリンクを検出し、最大5件のヒント行(links形式)を返す。
3
+ * 検出ゼロの場合は空配列(呼び出し側はdata_sourcesセクション自体を出力しない)。
4
+ *
5
+ * 優先順位: (1) 拡張子一致(.csv等)を常に優先し、5枠のうち埋まる分だけ使う。
6
+ * (2) 拡張子一致で埋まらなかった残り枠のみ、語彙一致(オープンデータ/一括ダウンロード等)
7
+ * のリンクで埋める。同一拡張子のリンクは1グループに集約し、代表1件+「ほかN件」で表す
8
+ * (例: 年度違いのCSVが20本 → 代表1本+ほか19件)。
9
+ */
10
+ export declare function detectDataSources(html: string, baseUrl: string): string[];
@@ -0,0 +1,115 @@
1
+ /**
2
+ * extract/dataSources.ts — 機能C: data_sourcesヒント(構造化データへの出口)。
3
+ *
4
+ * fetch応答(markdown/auto経路)の末尾に、ページ内リンクのうち構造化データ
5
+ * (CSV/ZIP/JSON等のオープンデータ)らしきものを検出した場合のみ、最大5件のヒントを付与する。
6
+ * 検出ロジックはlinks.tsのページ内リンク抽出(extractPageLinks)を再利用する
7
+ * (sitemap/RSSは対象外。あくまで通常のfetch応答への軽量な付加情報)。
8
+ *
9
+ * 実機検証での修正: 拡張子一致(.csv等、意図がほぼ確実)を語彙一致(誤検出しやすい)より
10
+ * 常に優先する。厚労省ページ実測で「点字ダウンロード」(無関係な視覚障害者向けページ)や
11
+ * 「オープンデータ(デジタル庁)」(他ドメインへの説明リンク)が誤検出され、本命の
12
+ * jigyosho_*.csv が5枠から溢れる問題があったため。
13
+ */
14
+ import { extractPageLinks } from "../links.js";
15
+ /** 拡張子ベースの検出対象(パス末尾一致、大文字小文字を区別しない)。 */
16
+ const STRUCTURED_EXTENSIONS = [".csv", ".tsv", ".zip", ".json", ".xlsx", ".xls"];
17
+ /**
18
+ * ドメインを問わず一致させてよい、意図が強く明確な語彙のみに絞る(単独の「ダウンロード」は
19
+ * 「点字ダウンロード」等の無関係なリンクまで拾ってしまうため除外し、「一括ダウンロード」
20
+ * のような強いシグナルのみを対象にする)。
21
+ */
22
+ const GENERIC_VOCAB_KEYWORDS = ["一括ダウンロード", "API", "sitemap.xml", "RSS"];
23
+ /**
24
+ * 「オープンデータ」は単独では説明文・他省庁ポータルへのリンク等でも頻出するため、
25
+ * リンク先が起点ページと同一ドメインの場合のみ構造化データへの導線とみなす。
26
+ */
27
+ const SAME_DOMAIN_VOCAB_KEYWORDS = ["オープンデータ"];
28
+ const MAX_HINTS = 5;
29
+ function matchedExtension(url) {
30
+ let pathname;
31
+ try {
32
+ pathname = new URL(url).pathname.toLowerCase();
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ return STRUCTURED_EXTENSIONS.find((ext) => pathname.endsWith(ext)) ?? null;
38
+ }
39
+ function isSameDomain(url, baseUrl) {
40
+ try {
41
+ return new URL(url).hostname === new URL(baseUrl).hostname;
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ function matchesVocab(entry, baseUrl) {
48
+ const haystack = `${entry.title ?? ""} ${entry.url}`.toLowerCase();
49
+ if (GENERIC_VOCAB_KEYWORDS.some((keyword) => haystack.includes(keyword.toLowerCase()))) {
50
+ return true;
51
+ }
52
+ if (SAME_DOMAIN_VOCAB_KEYWORDS.some((keyword) => haystack.includes(keyword.toLowerCase()))) {
53
+ return isSameDomain(entry.url, baseUrl);
54
+ }
55
+ return false;
56
+ }
57
+ /** 代表リンク1件+集約件数を1行に整形する(links.tsのformatLinksResponseと同形式)。 */
58
+ function formatHintLine(group) {
59
+ const rep = group.entries[0];
60
+ if (!rep)
61
+ return "";
62
+ const base = rep.title ? `- ${rep.title} — ${rep.url}` : `- ${rep.url}`;
63
+ if (group.entries.length <= 1)
64
+ return base;
65
+ const extra = group.entries.length - 1;
66
+ const filterSuffix = group.extension ? `、links filter:'*${group.extension}' で列挙可` : "";
67
+ return `${base}(ほか${extra}件${filterSuffix})`;
68
+ }
69
+ /**
70
+ * HTMLから構造化データっぽいリンクを検出し、最大5件のヒント行(links形式)を返す。
71
+ * 検出ゼロの場合は空配列(呼び出し側はdata_sourcesセクション自体を出力しない)。
72
+ *
73
+ * 優先順位: (1) 拡張子一致(.csv等)を常に優先し、5枠のうち埋まる分だけ使う。
74
+ * (2) 拡張子一致で埋まらなかった残り枠のみ、語彙一致(オープンデータ/一括ダウンロード等)
75
+ * のリンクで埋める。同一拡張子のリンクは1グループに集約し、代表1件+「ほかN件」で表す
76
+ * (例: 年度違いのCSVが20本 → 代表1本+ほか19件)。
77
+ */
78
+ export function detectDataSources(html, baseUrl) {
79
+ const links = extractPageLinks(html, baseUrl);
80
+ const extensionGroups = new Map();
81
+ const extensionOrder = [];
82
+ const vocabGroups = new Map();
83
+ const vocabOrder = [];
84
+ for (const link of links) {
85
+ const extension = matchedExtension(link.url);
86
+ if (extension !== null) {
87
+ let group = extensionGroups.get(extension);
88
+ if (!group) {
89
+ group = { entries: [], extension };
90
+ extensionGroups.set(extension, group);
91
+ extensionOrder.push(extension);
92
+ }
93
+ group.entries.push(link);
94
+ continue;
95
+ }
96
+ if (matchesVocab(link, baseUrl)) {
97
+ const key = `url:${link.url}`;
98
+ let group = vocabGroups.get(key);
99
+ if (!group) {
100
+ group = { entries: [], extension: null };
101
+ vocabGroups.set(key, group);
102
+ vocabOrder.push(key);
103
+ }
104
+ group.entries.push(link);
105
+ }
106
+ }
107
+ const extensionHints = extensionOrder.map((key) => extensionGroups.get(key)).map(formatHintLine);
108
+ const remainingSlots = Math.max(MAX_HINTS - extensionHints.length, 0);
109
+ const vocabHints = vocabOrder
110
+ .slice(0, remainingSlots)
111
+ .map((key) => vocabGroups.get(key))
112
+ .map(formatHintLine);
113
+ return [...extensionHints, ...vocabHints].slice(0, MAX_HINTS);
114
+ }
115
+ //# sourceMappingURL=dataSources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataSources.js","sourceRoot":"","sources":["../../src/extract/dataSources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * extract/geometry.ts — Phase 4 ジオメトリ抽出(構造化が甘いdiv soup/テーブルレイアウト対策)。
3
+ *
4
+ * Readability+J4スコアの抽出結果が貧弱(本文が短い)かつJ7アダプタが非該当のページに対する
5
+ * 最終フォールバック。ブラウザ昇格時に採取したテキストブロック(要素単位。真の意味での
6
+ * テキストノード粒度ではなく、p/li/td等の「テキストを直接持つリーフ要素」単位で近似する)の
7
+ * bounding boxから、縦方向に連続し水平位置(左端)が揃うブロック群を1つの「カラム」として
8
+ * クラスタリングし、最もテキスト量の多いクラスタを主コンテンツ領域とみなす。
9
+ *
10
+ * 「セマンティックなDOMではなくレンダリング結果の見た目(ジオメトリ)を一次情報にする」
11
+ * というplan.mdの前提認識(§0)を素朴な形で実装したもの。
12
+ */
13
+ export interface TextBlockGeometry {
14
+ /** ブラウザ側でDOM要素に付与した一時id(data-amenbo-gid)。DOM再選択に使う。 */
15
+ id: number;
16
+ x: number;
17
+ y: number;
18
+ width: number;
19
+ height: number;
20
+ /** このブロック自身の直接テキスト長(トリム後)。 */
21
+ textLength: number;
22
+ }
23
+ export interface GeometryCluster {
24
+ blockIds: number[];
25
+ totalTextLength: number;
26
+ top: number;
27
+ bottom: number;
28
+ left: number;
29
+ right: number;
30
+ }
31
+ /** 表/canvas/svg等の視覚要素のbounding box(J6/Phase4の視覚要素占有率の実測に使う)。 */
32
+ export interface VisualElementGeometry {
33
+ tag: string;
34
+ x: number;
35
+ y: number;
36
+ width: number;
37
+ height: number;
38
+ }
39
+ /** ブラウザ昇格時に採取する、ページ全体のジオメトリスナップショット。 */
40
+ export interface PageGeometrySnapshot {
41
+ textBlocks: TextBlockGeometry[];
42
+ visualElements: VisualElementGeometry[];
43
+ pageWidth: number;
44
+ pageHeight: number;
45
+ }
46
+ /**
47
+ * 表/canvas/svgのbounding box面積の合計 / ページ全体面積(0-1)。
48
+ * Phase 2まではDOM要素数ベースの近似だった「視覚要素占有率」を、実ジオメトリで置き換える。
49
+ * 要素同士の重なりは考慮しない単純合計(重なりは稀なため許容する近似)。
50
+ */
51
+ export declare function computeVisualAreaRatio(visualElements: VisualElementGeometry[], pageWidth: number, pageHeight: number): number;
52
+ /**
53
+ * テキストブロック群を、縦方向に連続し左端座標が揃うクラスタ(カラム)へ分割する(純関数)。
54
+ * テキスト量の多い順にソートして返す(先頭が最も本文らしいクラスタ)。
55
+ *
56
+ * 実装上の注意: y昇順に処理する際、複数カラム(本文とサイドバー等)が同じy範囲に
57
+ * 交互に出現しうるため、「直前に処理した1ブロックとだけ」比較する単純な線形走査では
58
+ * カラムが混ざってしまう。そのため現在「進行中」の全カラム候補(OpenColumn)を保持し、
59
+ * 各ブロックについて左端座標が近い進行中カラムを探して追加する(見つからなければ新規カラム)。
60
+ */
61
+ export declare function clusterTextBlocks(blocks: TextBlockGeometry[]): GeometryCluster[];
62
+ /** 最もテキスト量が多い(=本文らしい)クラスタを主コンテンツ領域として選ぶ。無ければnull。 */
63
+ export declare function selectMainContentCluster(blocks: TextBlockGeometry[]): GeometryCluster | null;