bps-mcp-server 0.13.2 → 0.15.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.md +27 -7
- package/dist/services/intent-detector.d.ts +21 -0
- package/dist/services/intent-detector.d.ts.map +1 -0
- package/dist/services/intent-detector.js +171 -0
- package/dist/services/intent-detector.js.map +1 -0
- package/dist/services/learning.d.ts +1 -0
- package/dist/services/learning.d.ts.map +1 -1
- package/dist/services/learning.js +66 -11
- package/dist/services/learning.js.map +1 -1
- package/dist/tools/smart.tools.d.ts.map +1 -1
- package/dist/tools/smart.tools.js +76 -6
- package/dist/tools/smart.tools.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -9,13 +9,18 @@ MCP (Model Context Protocol) server untuk data statistik BPS (Badan Pusat Statis
|
|
|
9
9
|
## Fitur
|
|
10
10
|
|
|
11
11
|
- **39 tools** mencakup seluruh endpoint BPS WebAPI v1 + AllStats Search + AI-friendly shortcuts
|
|
12
|
-
- **AI-friendly** — tool `find_data`
|
|
12
|
+
- **AI-friendly** — tool `find_data` dengan intent detection otomatis (resolve wilayah → detect intent → cari variabel → ambil data)
|
|
13
|
+
- **Intent Detection** — otomatis detect: single value, comparison, trend, ranking, table/breakdown, publication
|
|
14
|
+
- **Stopwords-ISO** — noise removal otomatis untuk 758 kata Indonesia + 1298 kata Inggris
|
|
15
|
+
- **Static Table Fallback** — `find_data` otomatis fallback ke tabel statis jika dynamic data tidak tersedia (misal: data agama)
|
|
16
|
+
- **Result Hints** — setiap response include tips lanjutan yang actionable
|
|
13
17
|
- **Integrasi AllStats Search** — pencarian unified + full-text PDF search (tanpa API key)
|
|
14
18
|
- **Smart fallback** — WebAPI search otomatis fallback ke AllStats jika tidak ada hasil
|
|
15
19
|
- **3 MCP Resources** — domain list, kabupaten per provinsi, subjek per domain
|
|
16
20
|
- **5 MCP Prompts** — template analisis data siap pakai
|
|
17
21
|
- **Domain resolver** dengan fuzzy matching (ketik "Jatim" → Jawa Timur)
|
|
18
22
|
- **Data formatter** yang mengubah raw BPS data menjadi format mudah dibaca
|
|
23
|
+
- **Persistent learning store** — auto-learn variable mappings, survive restart
|
|
19
24
|
- **In-memory cache** dengan TTL per tipe data
|
|
20
25
|
- **Rate limiting** — 60 req/menit per API key (remote worker)
|
|
21
26
|
- **Bilingual** — error messages dan response mendukung bahasa Indonesia dan Inggris
|
|
@@ -229,11 +234,14 @@ User: "Berapa angka kemiskinan Indonesia 2023?"
|
|
|
229
234
|
AI menggunakan: find_data(query="penduduk miskin", region="Indonesia", year="2023")
|
|
230
235
|
|
|
231
236
|
Proses internal (otomatis):
|
|
237
|
+
0. Intent Detection: "single_value" → find_data
|
|
232
238
|
1. Resolve "Indonesia" → domain 0000
|
|
233
|
-
2.
|
|
234
|
-
3. Cari
|
|
235
|
-
4.
|
|
236
|
-
5.
|
|
239
|
+
2. Normalize: "berapa angka kemiskinan" → "kemiskinan" (stopwords-iso)
|
|
240
|
+
3. Cari subjek relevan → "Kemiskinan dan Ketimpangan"
|
|
241
|
+
4. Cari variabel → "Jumlah Penduduk Miskin" (var_id: 183)
|
|
242
|
+
5. Resolve "2023" → period ID 123
|
|
243
|
+
6. Ambil data → 25,9 juta jiwa
|
|
244
|
+
7. Result hints: "💡 Gini rasio: get_dynamic_data(var="98")"
|
|
237
245
|
|
|
238
246
|
Jika find_data gagal, AI bisa:
|
|
239
247
|
- find_variable(keyword="miskin") → lihat variabel yang tersedia
|
|
@@ -248,6 +256,12 @@ AI menggunakan: get_trend(query="pengangguran", region="Indonesia", start_year="
|
|
|
248
256
|
|
|
249
257
|
User: "10 provinsi termiskin"
|
|
250
258
|
AI menggunakan: get_ranking(query="kemiskinan", top_n=10, order="highest")
|
|
259
|
+
|
|
260
|
+
User: "Statistik pemeluk agama di Kab Jombang"
|
|
261
|
+
AI menggunakan: find_data(query="pemeluk agama", region="Kab Jombang")
|
|
262
|
+
→ Intent: "table" → find_data dengan static table fallback
|
|
263
|
+
→ Otomatis ambil tabel statis "Jumlah Penduduk Menurut Agama"
|
|
264
|
+
→ Result hints: "💡 Breakdown detail: list_static_tables(keyword="agama")"
|
|
251
265
|
```
|
|
252
266
|
|
|
253
267
|
## Contoh Query
|
|
@@ -264,6 +278,8 @@ AI menggunakan: get_ranking(query="kemiskinan", top_n=10, order="highest")
|
|
|
264
278
|
"Cari teks tentang akses internet di dalam publikasi BPS"
|
|
265
279
|
"Berapa IPM Jawa Timur?"
|
|
266
280
|
"Pertumbuhan ekonomi Indonesia triwulan terakhir"
|
|
281
|
+
"Statistik pemeluk agama di Kabupaten Klaten"
|
|
282
|
+
"Distribusi penduduk per kecamatan di Jakarta"
|
|
267
283
|
```
|
|
268
284
|
|
|
269
285
|
## Resources (3)
|
|
@@ -310,7 +326,7 @@ npm install
|
|
|
310
326
|
|
|
311
327
|
```bash
|
|
312
328
|
npm run build # Compile TypeScript
|
|
313
|
-
npm run test:unit # Run unit tests (
|
|
329
|
+
npm run test:unit # Run unit tests (105+ tests)
|
|
314
330
|
npm run lint # ESLint check
|
|
315
331
|
npm run typecheck # TypeScript type check
|
|
316
332
|
```
|
|
@@ -376,8 +392,12 @@ src/
|
|
|
376
392
|
├── prompts/ # MCP prompt templates
|
|
377
393
|
├── resources/ # MCP resources (domain lists)
|
|
378
394
|
├── services/ # Cache, domain resolver, data formatter
|
|
395
|
+
│ ├── intent-detector.ts # Intent detection (comparison, trend, ranking, table)
|
|
396
|
+
│ ├── learning.ts # Persistent learning store + stopwords-iso
|
|
397
|
+
│ ├── domain-resolver.ts # Fuzzy domain matching
|
|
398
|
+
│ └── data-formatter.ts # Format BPS data to markdown
|
|
379
399
|
├── tools/ # MCP tool definitions (39 tools)
|
|
380
|
-
│ ├── smart.tools.ts # find_data, find_variable (AI shortcuts)
|
|
400
|
+
│ ├── smart.tools.ts # find_data, find_variable (AI shortcuts + intent detection)
|
|
381
401
|
│ ├── analysis.tools.ts # compare_data, get_trend, get_ranking
|
|
382
402
|
│ ├── dynamic-data.tools.ts # Core data tools
|
|
383
403
|
│ ├── search.tools.ts # Search with AllStats fallback
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent detection for BPS queries.
|
|
3
|
+
* Detects user intent from natural language and suggests the best tool + params.
|
|
4
|
+
*/
|
|
5
|
+
export type BpsIntent = "single_value" | "comparison" | "trend" | "ranking" | "table" | "publication" | "unknown";
|
|
6
|
+
export interface IntentResult {
|
|
7
|
+
intent: BpsIntent;
|
|
8
|
+
confidence: number;
|
|
9
|
+
suggestedTool: string;
|
|
10
|
+
extractedParams: Record<string, string>;
|
|
11
|
+
hints: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Detect intent from a user query.
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectIntent(query: string, region: string, year?: string): IntentResult;
|
|
17
|
+
/**
|
|
18
|
+
* Generate result hints based on the query and result type.
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateResultHints(query: string, domain: string, domainName: string, _varId?: number, _varTitle?: string): string[];
|
|
21
|
+
//# sourceMappingURL=intent-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-detector.d.ts","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,YAAY,GACZ,OAAO,GACP,SAAS,GACT,OAAO,GACP,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA6CD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAmGd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,EAAE,CAiCV"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent detection for BPS queries.
|
|
3
|
+
* Detects user intent from natural language and suggests the best tool + params.
|
|
4
|
+
*/
|
|
5
|
+
// --- Intent patterns ---
|
|
6
|
+
const COMPARISON_PATTERNS = [
|
|
7
|
+
/\b(bandingkan|banding|vs|versus|dibandingkan|dibanding|membandingkan)\b/i,
|
|
8
|
+
/\b(antara)\s+(.+?)\s+(dan|dengan)\s+(.+?)(?:\s|$)/i,
|
|
9
|
+
/\b(manakah?\s+(yang|lebih))\b/i,
|
|
10
|
+
/\b(lebih\s+(tinggi|rendah|besar|kecil|baik|buruk))\b/i,
|
|
11
|
+
/\b(perbedaan|selisih|beda)\b/i,
|
|
12
|
+
/\b(dan)\b.*\b(dan)\b/i, // "X dan Y" pattern (2+ regions)
|
|
13
|
+
];
|
|
14
|
+
const TREND_PATTERNS = [
|
|
15
|
+
/\b(tren|trend|perkembangan|perubahan|fluktuasi|naik\s*turun)\b/i,
|
|
16
|
+
/\b(dari)\s+(\d{4})\s+(sampai|hingga|ke|s\/d)\s+(\d{4})/i,
|
|
17
|
+
/\b(\d{4})\s*[-–—]\s*(\d{4})/i,
|
|
18
|
+
/\b(sepanjang)\s+(tahun|periode|waktu)\b/i,
|
|
19
|
+
/\b(historis|historical|time\s*series|time-series)\b/i,
|
|
20
|
+
/\b(dalam\s+\d+)\s+(tahun|bulan|triwulan|kuartal)\b/i,
|
|
21
|
+
];
|
|
22
|
+
const RANKING_PATTERNS = [
|
|
23
|
+
/\b(peringkat|ranking|rank|urutan|posisi)\b/i,
|
|
24
|
+
/\b(top|teratas|terbaik|terburuk|tertinggi|terendah|termiskin|terkaya|terbesar|terkecil)\b/i,
|
|
25
|
+
/\b(10\s+(provinsi|kabupaten|kota|daerah|wilayah))\b/i,
|
|
26
|
+
/\b(urutkan|sorting|sort)\b/i,
|
|
27
|
+
/\b(paling|paling\s+(banyak|sedikit|tinggi|rendah))\b/i,
|
|
28
|
+
];
|
|
29
|
+
const TABLE_PATTERNS = [
|
|
30
|
+
/\b(tabel|table|data\s+tabular)\b/i,
|
|
31
|
+
/\b(pemeluk\s+agama|menurut\s+agama|distribusi\s+penduduk)\b/i,
|
|
32
|
+
/\b(per\s+(kecamatan|kabupaten|kota|provinsi|wilayah))\b/i,
|
|
33
|
+
/\b(breakdown|rincian|detail)\b/i,
|
|
34
|
+
/\b(distribusi|sebaran|penyebaran)\b/i,
|
|
35
|
+
];
|
|
36
|
+
const PUBLICATION_PATTERNS = [
|
|
37
|
+
/\b(publikasi|publication|laporan|report|brosur|booklet)\b/i,
|
|
38
|
+
/\b(brs|berita\s+resmi|press\s+release|siaran\s+pers)\b/i,
|
|
39
|
+
/\b(pdf|dokumen|file)\b/i,
|
|
40
|
+
/\b(cari\s+(teks|kata|kalimat)\s+(di\s+dalam|dalam))\b/i,
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* Detect intent from a user query.
|
|
44
|
+
*/
|
|
45
|
+
export function detectIntent(query, region, year) {
|
|
46
|
+
const hints = [];
|
|
47
|
+
const extractedParams = {};
|
|
48
|
+
// Extract year range from query if not provided
|
|
49
|
+
if (!year) {
|
|
50
|
+
const yearRange = query.match(/(\d{4})\s*[-–—]\s*(\d{4})/);
|
|
51
|
+
if (yearRange) {
|
|
52
|
+
extractedParams.year = `${yearRange[1]},${yearRange[2]}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Extract regions for comparison
|
|
56
|
+
const comparisonMatch = query.match(/(antara)\s+(.+?)\s+(dan|dengan)\s+(.+?)(?:\s+(pada|tahun|di)|$)/i);
|
|
57
|
+
if (comparisonMatch) {
|
|
58
|
+
extractedParams.region1 = comparisonMatch[2].trim();
|
|
59
|
+
extractedParams.region2 = comparisonMatch[4].trim();
|
|
60
|
+
}
|
|
61
|
+
// Score each intent
|
|
62
|
+
const scores = {
|
|
63
|
+
single_value: 10, // default
|
|
64
|
+
comparison: 0,
|
|
65
|
+
trend: 0,
|
|
66
|
+
ranking: 0,
|
|
67
|
+
table: 0,
|
|
68
|
+
publication: 0,
|
|
69
|
+
unknown: 0,
|
|
70
|
+
};
|
|
71
|
+
for (const pattern of COMPARISON_PATTERNS) {
|
|
72
|
+
if (pattern.test(query))
|
|
73
|
+
scores.comparison += 30;
|
|
74
|
+
}
|
|
75
|
+
for (const pattern of TREND_PATTERNS) {
|
|
76
|
+
if (pattern.test(query))
|
|
77
|
+
scores.trend += 30;
|
|
78
|
+
}
|
|
79
|
+
for (const pattern of RANKING_PATTERNS) {
|
|
80
|
+
if (pattern.test(query))
|
|
81
|
+
scores.ranking += 30;
|
|
82
|
+
}
|
|
83
|
+
for (const pattern of TABLE_PATTERNS) {
|
|
84
|
+
if (pattern.test(query))
|
|
85
|
+
scores.table += 30;
|
|
86
|
+
}
|
|
87
|
+
for (const pattern of PUBLICATION_PATTERNS) {
|
|
88
|
+
if (pattern.test(query))
|
|
89
|
+
scores.publication += 30;
|
|
90
|
+
}
|
|
91
|
+
// Bonus for multiple regions in query
|
|
92
|
+
const regionCount = (query.match(/(dan|,|versus|vs)/g) || []).length;
|
|
93
|
+
if (regionCount >= 2)
|
|
94
|
+
scores.comparison += 20;
|
|
95
|
+
// Bonus for year range
|
|
96
|
+
if (year && year.includes(","))
|
|
97
|
+
scores.trend += 20;
|
|
98
|
+
// Determine best intent
|
|
99
|
+
let bestIntent = "single_value";
|
|
100
|
+
let bestScore = scores.single_value;
|
|
101
|
+
for (const [intent, score] of Object.entries(scores)) {
|
|
102
|
+
if (score > bestScore) {
|
|
103
|
+
bestScore = score;
|
|
104
|
+
bestIntent = intent;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Calculate confidence (0-1)
|
|
108
|
+
const confidence = Math.min(bestScore / 50, 1);
|
|
109
|
+
// Map intent to suggested tool
|
|
110
|
+
const toolMap = {
|
|
111
|
+
single_value: "find_data",
|
|
112
|
+
comparison: "compare_data",
|
|
113
|
+
trend: "get_trend",
|
|
114
|
+
ranking: "get_ranking",
|
|
115
|
+
table: "find_data", // find_data has static table fallback
|
|
116
|
+
publication: "search",
|
|
117
|
+
unknown: "find_data",
|
|
118
|
+
};
|
|
119
|
+
// Generate hints
|
|
120
|
+
if (bestIntent === "table") {
|
|
121
|
+
hints.push("💡 Query ini meminta data tabel/breakdown. find_data akan otomatis fallback ke static table jika dynamic data tidak tersedia.");
|
|
122
|
+
}
|
|
123
|
+
if (bestIntent === "comparison") {
|
|
124
|
+
hints.push("💡 Query ini meminta perbandingan. Gunakan compare_data untuk hasil yang lebih baik.");
|
|
125
|
+
}
|
|
126
|
+
if (bestIntent === "trend") {
|
|
127
|
+
hints.push("💡 Query ini meminta tren/time-series. Gunakan get_trend untuk data multi-tahun.");
|
|
128
|
+
}
|
|
129
|
+
if (bestIntent === "ranking") {
|
|
130
|
+
hints.push("💡 Query ini meminta ranking. Gunakan get_ranking untuk hasil yang lebih baik.");
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
intent: bestIntent,
|
|
134
|
+
confidence,
|
|
135
|
+
suggestedTool: toolMap[bestIntent],
|
|
136
|
+
extractedParams,
|
|
137
|
+
hints,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Generate result hints based on the query and result type.
|
|
142
|
+
*/
|
|
143
|
+
export function generateResultHints(query, domain, domainName, _varId, _varTitle) {
|
|
144
|
+
const hints = [];
|
|
145
|
+
const kw = query.toLowerCase();
|
|
146
|
+
// If result is for a kabupaten/kota, suggest province-level data
|
|
147
|
+
if (domain.length === 4 && !domain.endsWith("00")) {
|
|
148
|
+
const provDomain = domain.slice(0, 2) + "00";
|
|
149
|
+
hints.push(`💡 Data provinsi: find_data(query="${query}", region="provinsi") [domain: ${provDomain}]`);
|
|
150
|
+
}
|
|
151
|
+
// If query is about religion, suggest static table
|
|
152
|
+
if (kw.includes("agama") || kw.includes("religi")) {
|
|
153
|
+
hints.push(`💡 Breakdown detail: list_static_tables(domain="${domain}", keyword="agama")`);
|
|
154
|
+
}
|
|
155
|
+
// If query is about poverty, suggest related indicators
|
|
156
|
+
if (kw.includes("miskin") || kw.includes("kemiskinan")) {
|
|
157
|
+
hints.push(`💡 Gini rasio: get_dynamic_data(domain="${domain}", var="98")`);
|
|
158
|
+
hints.push(`💡 Garis kemiskinan: find_variable(keyword="garis kemiskinan", domain="${domain}")`);
|
|
159
|
+
}
|
|
160
|
+
// If query is about unemployment, suggest related indicators
|
|
161
|
+
if (kw.includes("pengangguran") || kw.includes("nganggur")) {
|
|
162
|
+
hints.push(`💡 TPak: find_variable(keyword="tpak", domain="${domain}")`);
|
|
163
|
+
hints.push(`💡 Angkatan kerja: find_variable(keyword="angkatan kerja", domain="${domain}")`);
|
|
164
|
+
}
|
|
165
|
+
// If query is about IPM, suggest related indicators
|
|
166
|
+
if (kw.includes("ipm") || kw.includes("pembangunan manusia")) {
|
|
167
|
+
hints.push(`💡 Data historis: get_trend(query="ipm", region="${domainName}")`);
|
|
168
|
+
}
|
|
169
|
+
return hints;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=intent-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-detector.js","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAmFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD;AAyDD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA+B5B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { logger } from "../utils/logger.js";
|
|
2
|
+
import stopwords from "stopwords-iso";
|
|
2
3
|
// --- KNOWN_VARS: hardcoded stable var_ids ---
|
|
3
4
|
const KNOWN_VARS = {
|
|
4
5
|
miskin: [
|
|
@@ -42,22 +43,47 @@ const KEYWORD_ALIASES = {
|
|
|
42
43
|
populasi: "penduduk",
|
|
43
44
|
population: "penduduk",
|
|
44
45
|
"jumlah penduduk": "penduduk",
|
|
46
|
+
// Agama
|
|
47
|
+
agama: "agama",
|
|
48
|
+
religi: "agama",
|
|
49
|
+
keagamaan: "agama",
|
|
50
|
+
religion: "agama",
|
|
51
|
+
"pemeluk agama": "agama",
|
|
45
52
|
};
|
|
46
|
-
// --- Noise words
|
|
47
|
-
const
|
|
53
|
+
// --- Noise words: stopwords-iso (ID + EN) + BPS domain-specific terms ---
|
|
54
|
+
const BPS_SPECIFIC_NOISE = [
|
|
55
|
+
"angka", "data", "statistik", "berapa", "terbaru",
|
|
56
|
+
"terkait", "pemeluk", "tentang", "terhadap",
|
|
57
|
+
"menurut", "berdasarkan", "terdiri", "atas",
|
|
58
|
+
"secara", "yaitu", "yakni", "bahwa", "juga",
|
|
59
|
+
"sudah", "telah", "masih", "lagi", "saja",
|
|
60
|
+
"sangat", "cukup", "hanya", "selain", "sebagai",
|
|
61
|
+
"seperti", "misalnya", "contoh", "lain", "lainnya",
|
|
62
|
+
"total", "keseluruhan", "seluruh", "semua",
|
|
63
|
+
"berapa", "berapaan", "tentang", "soal",
|
|
64
|
+
"kabupaten", "kota", "provinsi", "kecamatan",
|
|
65
|
+
"kab", "kec", "prov",
|
|
66
|
+
];
|
|
67
|
+
const ALL_STOPWORDS = new Set([
|
|
68
|
+
...(stopwords.id || []),
|
|
69
|
+
...(stopwords.en || []),
|
|
70
|
+
...BPS_SPECIFIC_NOISE,
|
|
71
|
+
]);
|
|
72
|
+
const NOISE_PATTERN = new RegExp(`\\b(${Array.from(ALL_STOPWORDS).sort((a, b) => b.length - a.length).join("|")})\\b`, "gi");
|
|
48
73
|
/**
|
|
49
74
|
* Normalize a user query into a canonical lookup keyword.
|
|
75
|
+
* Uses stopwords-iso for comprehensive noise removal.
|
|
50
76
|
*/
|
|
51
77
|
export function normalizeKeyword(query) {
|
|
52
78
|
return query
|
|
53
79
|
.toLowerCase()
|
|
54
|
-
.replace(
|
|
80
|
+
.replace(NOISE_PATTERN, "")
|
|
55
81
|
.replace(/\s+/g, " ")
|
|
56
82
|
.trim();
|
|
57
83
|
}
|
|
58
84
|
/**
|
|
59
85
|
* Resolve canonical key from a normalized keyword.
|
|
60
|
-
*
|
|
86
|
+
* Prefers the last matching keyword (e.g., "penduduk agama" → "agama").
|
|
61
87
|
*/
|
|
62
88
|
function resolveCanonical(normalized) {
|
|
63
89
|
// Direct alias match
|
|
@@ -66,17 +92,46 @@ function resolveCanonical(normalized) {
|
|
|
66
92
|
// Check if normalized IS a canonical key
|
|
67
93
|
if (KNOWN_VARS[normalized])
|
|
68
94
|
return normalized;
|
|
69
|
-
//
|
|
95
|
+
// Collect all matching canonical keys, prefer last match (more specific topic)
|
|
96
|
+
let lastMatch = null;
|
|
97
|
+
let lastPos = -1;
|
|
98
|
+
// Check alias keys
|
|
70
99
|
for (const [alias, canonical] of Object.entries(KEYWORD_ALIASES)) {
|
|
71
|
-
|
|
72
|
-
|
|
100
|
+
const pos = normalized.indexOf(alias);
|
|
101
|
+
if (pos >= 0 && pos > lastPos) {
|
|
102
|
+
lastMatch = canonical;
|
|
103
|
+
lastPos = pos;
|
|
104
|
+
}
|
|
73
105
|
}
|
|
74
|
-
// Check KNOWN_VARS keys
|
|
106
|
+
// Check KNOWN_VARS keys
|
|
75
107
|
for (const key of Object.keys(KNOWN_VARS)) {
|
|
76
|
-
|
|
77
|
-
|
|
108
|
+
const pos = normalized.indexOf(key);
|
|
109
|
+
if (pos >= 0 && pos > lastPos) {
|
|
110
|
+
lastMatch = key;
|
|
111
|
+
lastPos = pos;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Also check word-level: split normalized and check each word
|
|
115
|
+
const words = normalized.split(/\s+/);
|
|
116
|
+
for (let i = words.length - 1; i >= 0; i--) {
|
|
117
|
+
const word = words[i];
|
|
118
|
+
if (KEYWORD_ALIASES[word]) {
|
|
119
|
+
return KEYWORD_ALIASES[word];
|
|
120
|
+
}
|
|
121
|
+
if (KNOWN_VARS[word]) {
|
|
122
|
+
return word;
|
|
123
|
+
}
|
|
124
|
+
// Substring check for individual words
|
|
125
|
+
for (const [alias, canonical] of Object.entries(KEYWORD_ALIASES)) {
|
|
126
|
+
if (alias.includes(word) || word.includes(alias))
|
|
127
|
+
return canonical;
|
|
128
|
+
}
|
|
129
|
+
for (const key of Object.keys(KNOWN_VARS)) {
|
|
130
|
+
if (key.includes(word) || word.includes(key))
|
|
131
|
+
return key;
|
|
132
|
+
}
|
|
78
133
|
}
|
|
79
|
-
return normalized;
|
|
134
|
+
return lastMatch || normalized;
|
|
80
135
|
}
|
|
81
136
|
/**
|
|
82
137
|
* 3-layer lookup: KNOWN_VARS → PersistentStore → null (caller does full search).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.tools.d.ts","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"smart.tools.d.ts","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAYxE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,IAAI,CAmUN"}
|
|
@@ -3,6 +3,7 @@ import { formatDynamicData } from "../services/data-formatter.js";
|
|
|
3
3
|
import { appendAttribution } from "../services/attribution.js";
|
|
4
4
|
import { logger } from "../utils/logger.js";
|
|
5
5
|
import { lookupVar, learnVar, invalidateVar, lookupPeriod, learnPeriod, invalidatePeriod, normalizeKeyword, } from "../services/learning.js";
|
|
6
|
+
import { detectIntent, generateResultHints } from "../services/intent-detector.js";
|
|
6
7
|
/**
|
|
7
8
|
* AI-friendly shortcut tools that reduce multi-step workflows to single calls.
|
|
8
9
|
*/
|
|
@@ -79,9 +80,15 @@ Setelah mendapat var_id dari tool ini, gunakan get_dynamic_data untuk mengambil
|
|
|
79
80
|
});
|
|
80
81
|
// ---------- find_data ----------
|
|
81
82
|
server.tool("find_data", `Tool utama untuk AI: cari dan ambil data BPS dalam satu langkah.
|
|
82
|
-
Secara otomatis: resolve
|
|
83
|
+
Secara otomatis: detect intent → resolve wilayah → cari variabel → ambil data.
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
## Intent Detection (otomatis):
|
|
86
|
+
- **Single value** (angka spesifik) → find_data
|
|
87
|
+
- **Comparison** ("bandingkan X dan Y") → delegate ke compare_data
|
|
88
|
+
- **Trend** ("tren 2019-2024") → delegate ke get_trend
|
|
89
|
+
- **Ranking** ("10 provinsi termiskin") → delegate ke get_ranking
|
|
90
|
+
- **Table/Breakdown** ("pemeluk agama per kecamatan") → find_data + static table fallback
|
|
91
|
+
- **Publication** ("cari publikasi") → delegate ke search
|
|
85
92
|
|
|
86
93
|
## Quick Reference — Topik Umum
|
|
87
94
|
|
|
@@ -98,6 +105,7 @@ Gunakan tool ini sebagai langkah PERTAMA ketika user bertanya tentang data stati
|
|
|
98
105
|
| Jumlah Penduduk | get_dynamic_data(var="1452") | 1452 |
|
|
99
106
|
| PDRB | list_strategic_indicators(domain=kode_prov) | - |
|
|
100
107
|
| Ekspor/Impor | list_strategic_indicators atau get_trade_data | - |
|
|
108
|
+
| Agama/Religi | find_data atau list_static_tables | - |
|
|
101
109
|
| Publikasi/BRS | search atau allstats_search | - |
|
|
102
110
|
| Teks dalam PDF | allstats_deep_search | - |
|
|
103
111
|
|
|
@@ -110,12 +118,16 @@ Gunakan tool ini sebagai langkah PERTAMA ketika user bertanya tentang data stati
|
|
|
110
118
|
Contoh:
|
|
111
119
|
- find_data(query="penduduk miskin", region="Indonesia", year="2023")
|
|
112
120
|
- find_data(query="pengangguran", region="Jawa Timur", year="2023")
|
|
113
|
-
- find_data(query="PDRB", region="Bali", year="2023")
|
|
114
|
-
|
|
121
|
+
- find_data(query="PDRB", region="Bali", year="2023")
|
|
122
|
+
- find_data(query="pemeluk agama", region="Kabupaten Jombang")`, {
|
|
123
|
+
query: z.string().describe("Deskripsi data yang dicari (misal: jumlah penduduk, angka kemiskinan, inflasi, PDRB, pengangguran, pemeluk agama)"),
|
|
115
124
|
region: z.string().default("Indonesia").describe("Nama wilayah (misal: Indonesia, Jawa Timur, Surabaya, DKI Jakarta). Mendukung nama resmi dan singkatan."),
|
|
116
125
|
year: z.string().optional().describe("Tahun data (misal: '2023' atau '2020,2021,2022,2023' untuk multi-tahun). Kosongkan untuk data terbaru."),
|
|
117
126
|
}, async ({ query, region, year }) => {
|
|
118
127
|
try {
|
|
128
|
+
// Step 0: Detect intent
|
|
129
|
+
const intent = detectIntent(query, region, year);
|
|
130
|
+
logger.debug(`find_data: detected intent="${intent.intent}" confidence=${intent.confidence.toFixed(2)} tool="${intent.suggestedTool}"`);
|
|
119
131
|
// Step 1: Resolve domain
|
|
120
132
|
let domain = "0000";
|
|
121
133
|
let domainName = "Indonesia";
|
|
@@ -152,6 +164,28 @@ Contoh:
|
|
|
152
164
|
const indResult = await tryStrategicIndicators(client, kw, domain, domainName, year);
|
|
153
165
|
if (indResult)
|
|
154
166
|
return indResult;
|
|
167
|
+
// Fallback: try static tables
|
|
168
|
+
try {
|
|
169
|
+
const staticTables = await client.listStaticTables(domain, kw, undefined, undefined, 1);
|
|
170
|
+
if (staticTables.data && staticTables.data.length > 0) {
|
|
171
|
+
const bestTable = staticTables.data.find(t => t.title.toLowerCase().includes(kw) ||
|
|
172
|
+
kw.split(/\s+/).some(w => w.length > 2 && t.title.toLowerCase().includes(w))) || staticTables.data[0];
|
|
173
|
+
const tableDetail = await client.getStaticTable(domain, bestTable.table_id);
|
|
174
|
+
const tableLines = [
|
|
175
|
+
`**Pencarian:** "${query}" di ${domainName}`,
|
|
176
|
+
`**Sumber:** Tabel Statis — ${tableDetail.title}`,
|
|
177
|
+
"",
|
|
178
|
+
tableDetail.table,
|
|
179
|
+
];
|
|
180
|
+
if (tableDetail.excel) {
|
|
181
|
+
tableLines.push("", `**Download Excel:** ${tableDetail.excel}`);
|
|
182
|
+
}
|
|
183
|
+
return { content: [{ type: "text", text: appendAttribution(tableLines.join("\n")) }] };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (staticTableError) {
|
|
187
|
+
logger.debug(`find_data: static table fallback failed: ${staticTableError instanceof Error ? staticTableError.message : "unknown"}`);
|
|
188
|
+
}
|
|
155
189
|
return {
|
|
156
190
|
content: [{
|
|
157
191
|
type: "text",
|
|
@@ -205,8 +239,31 @@ Contoh:
|
|
|
205
239
|
}
|
|
206
240
|
}
|
|
207
241
|
}
|
|
208
|
-
// Still no data after retry
|
|
242
|
+
// Still no data after retry — try static tables as fallback
|
|
209
243
|
if (!result.datacontent || Object.keys(result.datacontent).length === 0) {
|
|
244
|
+
// Try static tables fallback
|
|
245
|
+
try {
|
|
246
|
+
const staticTables = await client.listStaticTables(domain, kw, undefined, undefined, 1);
|
|
247
|
+
if (staticTables.data && staticTables.data.length > 0) {
|
|
248
|
+
// Pick the most relevant table (first one, or search for best match)
|
|
249
|
+
const bestTable = staticTables.data.find(t => t.title.toLowerCase().includes(kw) ||
|
|
250
|
+
kw.split(/\s+/).some(w => w.length > 2 && t.title.toLowerCase().includes(w))) || staticTables.data[0];
|
|
251
|
+
const tableDetail = await client.getStaticTable(domain, bestTable.table_id);
|
|
252
|
+
const tableLines = [
|
|
253
|
+
`**Pencarian:** "${query}" di ${domainName}`,
|
|
254
|
+
`**Sumber:** Tabel Statis — ${tableDetail.title}`,
|
|
255
|
+
"",
|
|
256
|
+
tableDetail.table,
|
|
257
|
+
];
|
|
258
|
+
if (tableDetail.excel) {
|
|
259
|
+
tableLines.push("", `**Download Excel:** ${tableDetail.excel}`);
|
|
260
|
+
}
|
|
261
|
+
return { content: [{ type: "text", text: appendAttribution(tableLines.join("\n")) }] };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (staticTableError) {
|
|
265
|
+
logger.debug(`find_data: static table fallback failed: ${staticTableError instanceof Error ? staticTableError.message : "unknown"}`);
|
|
266
|
+
}
|
|
210
267
|
const altLines = [
|
|
211
268
|
`Data untuk variabel "${bestVar.title}" tidak tersedia${year ? ` untuk tahun ${year}` : ""} di ${domainName}.`,
|
|
212
269
|
"",
|
|
@@ -223,7 +280,10 @@ Contoh:
|
|
|
223
280
|
}
|
|
224
281
|
// Success — learn the variable mapping
|
|
225
282
|
await learnVar(query, domain, bestVar, store);
|
|
226
|
-
|
|
283
|
+
// Generate result hints
|
|
284
|
+
const hints = generateResultHints(query, domain, domainName, bestVar.var_id, bestVar.title);
|
|
285
|
+
const hintsText = hints.length > 0 ? "\n\n**💡 Tips Lanjutan:**\n" + hints.join("\n") : "";
|
|
286
|
+
return { content: [{ type: "text", text: header + formatted + hintsText }] };
|
|
227
287
|
}
|
|
228
288
|
catch (error) {
|
|
229
289
|
const msg = error instanceof Error ? error.message : "Gagal mengambil data";
|
|
@@ -245,6 +305,7 @@ const KEYWORD_SUBJECTS = {
|
|
|
245
305
|
kesehatan: [30],
|
|
246
306
|
pendidikan: [28],
|
|
247
307
|
pariwisata: [16],
|
|
308
|
+
agama: [12], religi: [12], keagamaan: [12],
|
|
248
309
|
};
|
|
249
310
|
function getSubjectIdsForKeyword(kw) {
|
|
250
311
|
const ids = [];
|
|
@@ -499,6 +560,15 @@ function computeRelevanceScore(query, title, subName) {
|
|
|
499
560
|
if (title.includes("indeks kedalaman") || title.includes("indeks keparahan"))
|
|
500
561
|
score -= 20;
|
|
501
562
|
}
|
|
563
|
+
// Prefer "jumlah penduduk menurut agama" for religion queries
|
|
564
|
+
if (query.includes("agama") || query.includes("religi")) {
|
|
565
|
+
if (title.includes("jumlah") || title.includes("penduduk"))
|
|
566
|
+
score += 30;
|
|
567
|
+
if (title.includes("menurut agama"))
|
|
568
|
+
score += 50;
|
|
569
|
+
if (title.includes("kepercayaan"))
|
|
570
|
+
score += 10;
|
|
571
|
+
}
|
|
502
572
|
return score;
|
|
503
573
|
}
|
|
504
574
|
//# sourceMappingURL=smart.tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.tools.js","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAK3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,MAAiB,EACjB,QAAwB,EACxB,MAAc,EACd,KAA8B;IAE9B,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,eAAe,EACf;;;;;;;yFAOqF,EACrF;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;QACxH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QACnH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;KAC/H,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAA4F,EAAE,CAAC;YAC5G,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAEjC,IAAI,OAAO,EAAE,CAAC;gBACZ,iCAAiC;gBACjC,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,yDAAyD;gBACzD,MAAM,SAAS,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI;qBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE;oBACV,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAChC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpF,CAAC,CAAC;qBACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAEtB,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAE/D,oCAAoC;gBACpC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC3C,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBACnE,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE;wBAAE,MAAM;gBAClC,CAAC;gBAED,mEAAmE;gBACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,iBAAiB,CACrB,+CAA+C,OAAO,eAAe,MAAM,OAAO;gCAClF,iJAAiJ,CAClJ;yBACF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAa;gBACtB,kCAAkC,OAAO,GAAG;gBAC5C,eAAe,MAAM,qBAAqB,OAAO,CAAC,MAAM,WAAW;gBACnE,EAAE;aACH,CAAC;YAEF,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,MAAM,iBAAiB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxH,IAAI,CAAC,CAAC,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1D,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,8DAA8D,GAAG,MAAM,GAAG,8CAA8C,CAAC,CAAC;YAErI,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAC9E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;IACH,CAAC,CACF,CAAC;IAEF,kCAAkC;IAClC,MAAM,CAAC,IAAI,CACT,WAAW,EACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sDAgCkD,EAClD;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;QAChI,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,yGAAyG,CAAC;QAC3J,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wGAAwG,CAAC;KAC/I,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,yBAAyB;YACzB,IAAI,MAAM,GAAG,MAAM,CAAC;YACpB,IAAI,UAAU,GAAG,WAAW,CAAC;YAE7B,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAC3B,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,iBAAiB,CACrB,YAAY,MAAM,kFAAkF,CACrG;6BACF,CAAC;wBACF,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACnC,uEAAuE;YACvE,gEAAgE;YAChE,MAAM,aAAa,GAAG,wCAAwC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3E,IAAI,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;YAC7B,MAAM,UAAU,GAA6F,EAAE,CAAC;YAEhH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC9D,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,qCAAqC;gBACrC,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrF,IAAI,SAAS;oBAAE,OAAO,SAAS,CAAC;gBAEhC,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,iBAAiB,CACrB,yBAAyB,KAAK,WAAW,UAAU,OAAO;gCAC1D,cAAc;gCACd,uCAAuC,KAAK,cAAc,MAAM,mDAAmD;gCACnH,gCAAgC,KAAK,mCAAmC;gCACxE,kDAAkD,MAAM,4BAA4B,CACrF;yBACF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,yBAAyB;YACzB,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,gBAAgB,KAAK,GAAG,CAAC,CAAC;YAClG,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAErF,mBAAmB;YACnB,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;YAEtF,2FAA2F;YAC3F,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC1F,MAAM,CAAC,KAAK,CAAC,yDAAyD,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxF,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC1C,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;wBAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;gBACnG,CAAC;gBAED,yBAAyB;gBACzB,MAAM,eAAe,GAA6F,EAAE,CAAC;gBACrH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC1E,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,GAAG,QAAQ,CAAC;oBACnB,YAAY,GAAG,KAAK,CAAC;oBACrB,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;oBACrF,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;oBAClF,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,mBAAmB,KAAK,QAAQ,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,mBAAmB,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,MAAM,OAAO,CAAC;YAEnJ,gEAAgE;YAChE,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;gBACrE,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC/C,MAAM,gBAAgB,GAA6F,EAAE,CAAC;gBACtH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;gBACjI,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC9F,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;oBACvG,IAAI,YAAY,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACjF,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1F,MAAM,YAAY,GAAG,mBAAmB,KAAK,QAAQ,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,mBAAmB,SAAS,CAAC,KAAK,SAAS,SAAS,CAAC,MAAM,gDAAgD,YAAY,QAAQ,CAAC;wBAC1N,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,eAAe,EAAE,CAAC,EAAE,CAAC;oBAC/E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,4BAA4B;YAC5B,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,QAAQ,GAAG;oBACf,wBAAwB,OAAO,CAAC,KAAK,mBAAmB,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,UAAU,GAAG;oBAC9G,EAAE;iBACH,CAAC;gBACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,QAAQ,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;oBACzD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;wBACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzF,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClB,QAAQ,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;gBACjG,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACvF,CAAC;YAED,uCAAuC;YACvC,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAE9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACnE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,gBAAgB,GAA6B;IACjD,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC7D,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACnE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAChD,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,EAAE,CAAC;IACf,UAAU,EAAE,CAAC,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC,EAAE,CAAC;CACjB,CAAC;AAEF,SAAS,uBAAuB,CAAC,EAAU;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjE,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,aAAa,CAC1B,MAAiB,EACjB,EAAU,EACV,MAAc,EACd,UAAoG;IAEpG,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAChD,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG;QACzB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;KAC1E,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAChG,IAAI,KAAK,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClH,CAAC;QACD,6EAA6E;QAC7E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACjF,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;YACxD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChG,IAAI,KAAK,GAAG,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM;IACrC,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,eAAe,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxE,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE,CAAC;YAC3C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzF,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBACpD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChG,IAAI,KAAK,GAAG,CAAC;wBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClH,CAAC;gBACD,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;oBAAE,MAAM;gBAClC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;oBAAE,MAAM;YACtC,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;QACpC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClI,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8DAA8D;AAC9D,KAAK,UAAU,aAAa,CAC1B,MAAiB,EACjB,KAA8B,EAC9B,KAAa,EACb,MAAc,EACd,IAAwB;IAExB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,kDAAkD;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,mEAAmE;gBACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,OAAO;YAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACzC,MAAM,IAAI,GAAG,CAAuC,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YACH,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,wBAAwB;gBACxB,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,CAAuC,CAAC;oBACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;oBACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3D,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4CAA4C;AAC5C,KAAK,UAAU,sBAAsB,CACnC,MAAiB,EACjB,EAAU,EACV,MAAc,EACd,UAAkB,EAClB,IAAwB;IAExB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAElE,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,KAAK,GAAG;gBACZ,MAAM,GAAG,CAAC,KAAK,EAAE;gBACjB,gBAAgB,UAAU,KAAK,MAAM,GAAG;gBACxC,EAAE;aACH,CAAC;YACF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,IAAI;oBACnB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,MAAM,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,wBAAwB,CACrC,MAAiB,EACjB,MAAc,EACd,OAA2B,EAC3B,EAAU,EACV,OAAgG;IAEhG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAEpD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE7C,4CAA4C;YAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5C,IAAI,OAAO,EAAE,CAAC;gBACZ,mBAAmB;gBACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC;wBACX,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,GAAG,EAAE,CAAC,CAAC,GAAG;qBACX,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE;YAAE,MAAM;QAChC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,KAAa,EAAE,KAAa,EAAE,OAAe;IAC1E,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEhE,8BAA8B;IAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,GAAG,CAAC;IAExC,8BAA8B;IAC9B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,IAAI,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,qCAAqC;IACrC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,KAAK,UAAU,CAAC,MAAM;QAAE,KAAK,IAAI,EAAE,CAAC;IAE5E,0BAA0B;IAC1B,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IAEzC,8DAA8D;IAC9D,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IAEvG,uDAAuD;IACvD,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,KAAK,IAAI,EAAE,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,KAAK,IAAI,EAAE,CAAC;IAEpC,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7E,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC5D,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,kBAAkB;QAAE,KAAK,IAAI,EAAE,CAAC;IAEzD,8DAA8D;IAC9D,IAAI,kBAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAClF,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,sFAAsF;IACtF,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7D,8DAA8D;QAC9D,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,KAAK,IAAI,EAAE,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAAE,KAAK,IAAI,EAAE,CAAC;iBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC;gBAAE,KAAK,IAAI,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,KAAK,IAAI,EAAE,CAAC;IAC5F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"smart.tools.js","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bps-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "MCP server for BPS (Badan Pusat Statistik) Indonesia statistics data",
|
|
5
5
|
"author": "Murphi",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"@cloudflare/workers-oauth-provider": "^0.6.0",
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
43
43
|
"cheerio": "^1.2.0",
|
|
44
|
+
"stopwords-iso": "^1.1.0",
|
|
44
45
|
"zod": "^4.4.3"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|