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.
package/dist/tokens.d.ts CHANGED
@@ -1,14 +1,27 @@
1
1
  /**
2
- * J5: CJK対応トークン見積り。
2
+ * J5: 文字クラス別のトークン見積り。
3
3
  *
4
- * 文字クラス別係数(plan.md §2 J5):
5
- * - ASCII等(半角英数記号): 1トークン ≒ 3.8文字
6
- * - CJK(かな/カナ/漢字/全角記号等): 1文字 ≒ 0.9トークン
4
+ * 文字クラス別係数:
5
+ * - ラテン文字(英数字・ラテン拡張の文字): 1トークン ≒ 3.8文字
6
+ * - ASCII記号(約物・記法): 1文字 ≒ 0.5トークン
7
+ * - 非ラテン文字(キリル/ギリシャ/ヘブライ/アラビア/デーヴァナーガリー/タイ等): 1文字 ≒ 0.5トークン
8
+ * - CJK・ハングル(かな/カナ/漢字/全角記号/ハングル): 1文字 ≒ 0.9トークン
9
+ * - 記号・絵文字(約物/矢印/数学記号/ピクトグラム): 1文字 ≒ 1.5トークン
7
10
  *
8
- * 設計判断: plan.mdはASCII/CJKの二区分のみを定義しているため、絵文字・キリル文字等の
9
- * その他多バイト文字はASCII側の係数で近似する(Phase 1のスコープでは十分な精度と判断)。
11
+ * 係数はo200k_base(GPT-4o)での実測に、既存係数と同程度(約1.15倍)の安全側マージンを乗せた値。
12
+ * 実測(1文字あたりトークン数): 英4.78文字/token、日0.79、韓0.75、中0.80、露0.29、
13
+ * 亜0.35、希0.38、印0.40、泰0.44、ヘブライ0.47、一般約物1.00、矢印/数学1.40、絵文字1.30〜1.80。
14
+ *
15
+ * 当初はASCII/CJKの二区分のみで、ハングルを含む非ラテン文字も記号・絵文字もASCII係数で
16
+ * 近似していたが、韓国語では実トークン量の約1/3、絵文字では約1/7にしか見積もれず、
17
+ * max_tokens予算が大きく超過していた(言語による不公平は本ツールでは不具合として扱う)。
18
+ * ASCII記号を文字と分けているのは、`| --- |`のようなMarkdown表の記法が
19
+ * 文字と同じ密度では圧縮されないため(このツールの主力出力なので実測で最も外れていた)。
20
+ *
21
+ * 全クラス適用後の見積り/実測比は、散文で1.14〜2.00倍(安全側)、
22
+ * 記法が密なMarkdown表で0.71倍(過小側の最悪ケース)。
10
23
  */
11
- /** テキストの概算トークン数を返す(CJK文字クラス別係数)。 */
24
+ /** テキストの概算トークン数を返す(文字クラス別係数)。 */
12
25
  export declare function estimateTokens(text: string): number;
13
26
  /** Markdownの1ブロック(見出し/段落/リスト項目/表/コードフェンス等)。 */
14
27
  export interface Block {
package/dist/tokens.js CHANGED
@@ -1,19 +1,45 @@
1
1
  /**
2
- * J5: CJK対応トークン見積り。
2
+ * J5: 文字クラス別のトークン見積り。
3
3
  *
4
- * 文字クラス別係数(plan.md §2 J5):
5
- * - ASCII等(半角英数記号): 1トークン ≒ 3.8文字
6
- * - CJK(かな/カナ/漢字/全角記号等): 1文字 ≒ 0.9トークン
4
+ * 文字クラス別係数:
5
+ * - ラテン文字(英数字・ラテン拡張の文字): 1トークン ≒ 3.8文字
6
+ * - ASCII記号(約物・記法): 1文字 ≒ 0.5トークン
7
+ * - 非ラテン文字(キリル/ギリシャ/ヘブライ/アラビア/デーヴァナーガリー/タイ等): 1文字 ≒ 0.5トークン
8
+ * - CJK・ハングル(かな/カナ/漢字/全角記号/ハングル): 1文字 ≒ 0.9トークン
9
+ * - 記号・絵文字(約物/矢印/数学記号/ピクトグラム): 1文字 ≒ 1.5トークン
7
10
  *
8
- * 設計判断: plan.mdはASCII/CJKの二区分のみを定義しているため、絵文字・キリル文字等の
9
- * その他多バイト文字はASCII側の係数で近似する(Phase 1のスコープでは十分な精度と判断)。
11
+ * 係数はo200k_base(GPT-4o)での実測に、既存係数と同程度(約1.15倍)の安全側マージンを乗せた値。
12
+ * 実測(1文字あたりトークン数): 英4.78文字/token、日0.79、韓0.75、中0.80、露0.29、
13
+ * 亜0.35、希0.38、印0.40、泰0.44、ヘブライ0.47、一般約物1.00、矢印/数学1.40、絵文字1.30〜1.80。
14
+ *
15
+ * 当初はASCII/CJKの二区分のみで、ハングルを含む非ラテン文字も記号・絵文字もASCII係数で
16
+ * 近似していたが、韓国語では実トークン量の約1/3、絵文字では約1/7にしか見積もれず、
17
+ * max_tokens予算が大きく超過していた(言語による不公平は本ツールでは不具合として扱う)。
18
+ * ASCII記号を文字と分けているのは、`| --- |`のようなMarkdown表の記法が
19
+ * 文字と同じ密度では圧縮されないため(このツールの主力出力なので実測で最も外れていた)。
20
+ *
21
+ * 全クラス適用後の見積り/実測比は、散文で1.14〜2.00倍(安全側)、
22
+ * 記法が密なMarkdown表で0.71倍(過小側の最悪ケース)。
10
23
  */
11
- const ASCII_CHARS_PER_TOKEN = 3.8;
24
+ const LATIN_CHARS_PER_TOKEN = 3.8;
12
25
  const CJK_TOKENS_PER_CHAR = 0.9;
26
+ const NON_LATIN_TOKENS_PER_CHAR = 0.5;
27
+ const SYMBOL_TOKENS_PER_CHAR = 1.5;
28
+ const ASCII_PUNCT_TOKENS_PER_CHAR = 0.5;
29
+ /** ラテン文字・ASCII記号の範囲(基本ラテン〜ラテン文字拡張B)。 */
30
+ const LATIN_MAX_CODE_POINT = 0x024f;
31
+ /** 英数字、またはラテン文字(アクセント付きを含む)か判定する。 */
32
+ function isLatinWordCodePoint(cp) {
33
+ return ((cp >= 0x30 && cp <= 0x39) || // 0-9
34
+ (cp >= 0x41 && cp <= 0x5a) || // A-Z
35
+ (cp >= 0x61 && cp <= 0x7a) || // a-z
36
+ (cp >= 0x00c0 && cp <= LATIN_MAX_CODE_POINT) // ラテン1補助〜ラテン文字拡張B
37
+ );
38
+ }
13
39
  /**
14
- * コードポイントがCJK(日本語表記に使われる文字)かどうかを判定する。
15
- * ひらがな・カタカナ・漢字(統合漢字+拡張A)・CJK記号(全角スペースを除く)・
16
- * 全角英数/記号(半角スペースに相当する全角スペースを除く)・半角カタカナを対象とする。
40
+ * 1文字あたりのトークン消費が大きい表記のコードポイントか判定する。
41
+ * ひらがな・カタカナ・漢字(統合漢字+拡張A/B+互換)・CJK記号(全角スペースを除く)・
42
+ * 全角英数/記号・半角カタカナ・ハングル(音節+字母)を対象とする。
17
43
  */
18
44
  function isCjkCodePoint(cp) {
19
45
  return ((cp >= 0x3040 && cp <= 0x309f) || // ひらがな
@@ -21,34 +47,59 @@ function isCjkCodePoint(cp) {
21
47
  (cp >= 0x3400 && cp <= 0x4dbf) || // CJK統合漢字拡張A
22
48
  (cp >= 0x4e00 && cp <= 0x9fff) || // CJK統合漢字
23
49
  (cp >= 0xf900 && cp <= 0xfaff) || // CJK互換漢字
50
+ (cp >= 0x20000 && cp <= 0x2fa1f) || // CJK統合漢字拡張B以降
24
51
  (cp >= 0x3001 && cp <= 0x303f) || // CJK記号(0x3000の全角スペースは除く)
25
- (cp >= 0xff01 && cp <= 0xffef) // 全角英数/記号・半角カタカナ(0xFF00の全角スペースは除く)
52
+ (cp >= 0xff01 && cp <= 0xffef) || // 全角英数/記号・半角カタカナ(0xFF00の全角スペースは除く)
53
+ (cp >= 0xac00 && cp <= 0xd7a3) || // ハングル音節
54
+ (cp >= 0x1100 && cp <= 0x11ff) || // ハングル字母
55
+ (cp >= 0x3130 && cp <= 0x318f) // ハングル互換字母
26
56
  );
27
57
  }
28
- /** テキストのCJK文字数と非CJK文字数を数える。 */
58
+ /**
59
+ * 約物・矢印・数学記号・ピクトグラムのコードポイントか判定する。
60
+ * CJK記号(全角約物)は先にCJK側で判定されるため、ここへは来ない。
61
+ */
62
+ function isSymbolCodePoint(cp) {
63
+ return ((cp >= 0x2000 && cp <= 0x2bff) || // 一般約物・矢印・数学記号・各種記号・装飾記号
64
+ (cp >= 0x2e00 && cp <= 0x2e7f) || // 補助句読点
65
+ cp >= 0x1f000 // 絵文字・ピクトグラム(拡張漢字はCJK側で判定済み)
66
+ );
67
+ }
68
+ /** テキストを文字クラス別に数える(空白はトークンをほぼ消費しないため数えない)。 */
29
69
  function countByClass(text) {
30
- let cjk = 0;
31
- let other = 0;
70
+ const counts = { cjk: 0, nonLatin: 0, symbol: 0, latinWord: 0, asciiPunct: 0 };
32
71
  for (const ch of text) {
33
72
  const cp = ch.codePointAt(0);
34
- if (cp === undefined)
73
+ if (cp === undefined || /\s/u.test(ch))
35
74
  continue;
36
75
  if (isCjkCodePoint(cp)) {
37
- cjk++;
76
+ counts.cjk++;
77
+ }
78
+ else if (isSymbolCodePoint(cp)) {
79
+ counts.symbol++;
80
+ }
81
+ else if (isLatinWordCodePoint(cp)) {
82
+ counts.latinWord++;
83
+ }
84
+ else if (cp > LATIN_MAX_CODE_POINT) {
85
+ counts.nonLatin++;
38
86
  }
39
- else if (!/\s/u.test(ch)) {
40
- // 空白は係数計算に含めない(トークンをほぼ消費しないため)
41
- other++;
87
+ else {
88
+ counts.asciiPunct++;
42
89
  }
43
90
  }
44
- return { cjk, other };
91
+ return counts;
45
92
  }
46
- /** テキストの概算トークン数を返す(CJK文字クラス別係数)。 */
93
+ /** テキストの概算トークン数を返す(文字クラス別係数)。 */
47
94
  export function estimateTokens(text) {
48
95
  if (text.length === 0)
49
96
  return 0;
50
- const { cjk, other } = countByClass(text);
51
- const tokens = cjk * CJK_TOKENS_PER_CHAR + other / ASCII_CHARS_PER_TOKEN;
97
+ const { cjk, nonLatin, symbol, latinWord, asciiPunct } = countByClass(text);
98
+ const tokens = cjk * CJK_TOKENS_PER_CHAR +
99
+ nonLatin * NON_LATIN_TOKENS_PER_CHAR +
100
+ symbol * SYMBOL_TOKENS_PER_CHAR +
101
+ asciiPunct * ASCII_PUNCT_TOKENS_PER_CHAR +
102
+ latinWord / LATIN_CHARS_PER_TOKEN;
52
103
  return Math.ceil(tokens);
53
104
  }
54
105
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amenbo",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "mcpName": "io.github.Rererr/amenbo",
5
5
  "description": "Skims the web without making waves — a Japanese-web-native MCP server for low-impact, token-efficient web collection: outline→section progressive disclosure and diff-only refetches keep context small",
6
6
  "type": "module",
@@ -29,6 +29,7 @@
29
29
  },
30
30
  "scripts": {
31
31
  "build": "tsc",
32
+ "prepack": "npm run build",
32
33
  "dev": "tsx src/server.ts",
33
34
  "dev:cli": "tsx src/cli.ts",
34
35
  "test": "vitest run",
@@ -36,7 +37,7 @@
36
37
  },
37
38
  "dependencies": {
38
39
  "@joplin/turndown-plugin-gfm": "^1.0.67",
39
- "@modelcontextprotocol/sdk": "^1.29.0",
40
+ "@modelcontextprotocol/server": "^2.0.0",
40
41
  "@mozilla/readability": "^0.6.0",
41
42
  "@napi-rs/canvas": "^1.0.2",
42
43
  "encoding-japanese": "^2.2.0",
@@ -49,6 +50,7 @@
49
50
  "zod": "^4.4.3"
50
51
  },
51
52
  "devDependencies": {
53
+ "@modelcontextprotocol/client": "^2.0.0",
52
54
  "@types/encoding-japanese": "^2.2.1",
53
55
  "@types/node": "^26.1.1",
54
56
  "@types/turndown": "^5.0.6",