bps-mcp-server 0.16.3 → 0.17.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 (110) hide show
  1. package/README.md +32 -8
  2. package/dist/client/allstats-client.d.ts +2 -0
  3. package/dist/client/allstats-client.d.ts.map +1 -1
  4. package/dist/client/allstats-client.js +62 -34
  5. package/dist/client/allstats-client.js.map +1 -1
  6. package/dist/client/bps-client.d.ts +24 -6
  7. package/dist/client/bps-client.d.ts.map +1 -1
  8. package/dist/client/bps-client.js +276 -31
  9. package/dist/client/bps-client.js.map +1 -1
  10. package/dist/client/endpoints.d.ts +7 -0
  11. package/dist/client/endpoints.d.ts.map +1 -1
  12. package/dist/client/endpoints.js +43 -5
  13. package/dist/client/endpoints.js.map +1 -1
  14. package/dist/client/fields.d.ts +27 -0
  15. package/dist/client/fields.d.ts.map +1 -0
  16. package/dist/client/fields.js +105 -0
  17. package/dist/client/fields.js.map +1 -0
  18. package/dist/client/request-scheduler.d.ts +29 -0
  19. package/dist/client/request-scheduler.d.ts.map +1 -0
  20. package/dist/client/request-scheduler.js +75 -0
  21. package/dist/client/request-scheduler.js.map +1 -0
  22. package/dist/client/types.d.ts +46 -22
  23. package/dist/client/types.d.ts.map +1 -1
  24. package/dist/config/kabkota-indicators.d.ts +30 -0
  25. package/dist/config/kabkota-indicators.d.ts.map +1 -0
  26. package/dist/config/kabkota-indicators.js +49 -0
  27. package/dist/config/kabkota-indicators.js.map +1 -0
  28. package/dist/index.js +19 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/resources/domain.resources.js +2 -2
  31. package/dist/resources/domain.resources.js.map +1 -1
  32. package/dist/server.d.ts.map +1 -1
  33. package/dist/server.js +31 -1
  34. package/dist/server.js.map +1 -1
  35. package/dist/services/data-formatter.d.ts +33 -1
  36. package/dist/services/data-formatter.d.ts.map +1 -1
  37. package/dist/services/data-formatter.js +129 -38
  38. package/dist/services/data-formatter.js.map +1 -1
  39. package/dist/services/dynamic-data-utils.d.ts +35 -0
  40. package/dist/services/dynamic-data-utils.d.ts.map +1 -0
  41. package/dist/services/dynamic-data-utils.js +132 -0
  42. package/dist/services/dynamic-data-utils.js.map +1 -0
  43. package/dist/services/file-store.d.ts +5 -1
  44. package/dist/services/file-store.d.ts.map +1 -1
  45. package/dist/services/file-store.js +16 -5
  46. package/dist/services/file-store.js.map +1 -1
  47. package/dist/services/intent-detector.d.ts.map +1 -1
  48. package/dist/services/intent-detector.js +11 -10
  49. package/dist/services/intent-detector.js.map +1 -1
  50. package/dist/services/kabkota-ranking.d.ts +61 -0
  51. package/dist/services/kabkota-ranking.d.ts.map +1 -0
  52. package/dist/services/kabkota-ranking.js +378 -0
  53. package/dist/services/kabkota-ranking.js.map +1 -0
  54. package/dist/services/learning.d.ts +2 -0
  55. package/dist/services/learning.d.ts.map +1 -1
  56. package/dist/services/learning.js +30 -9
  57. package/dist/services/learning.js.map +1 -1
  58. package/dist/services/variable-search.d.ts +50 -0
  59. package/dist/services/variable-search.d.ts.map +1 -0
  60. package/dist/services/variable-search.js +482 -0
  61. package/dist/services/variable-search.js.map +1 -0
  62. package/dist/tools/allstats.tools.d.ts.map +1 -1
  63. package/dist/tools/allstats.tools.js +13 -3
  64. package/dist/tools/allstats.tools.js.map +1 -1
  65. package/dist/tools/analysis.tools.d.ts.map +1 -1
  66. package/dist/tools/analysis.tools.js +368 -541
  67. package/dist/tools/analysis.tools.js.map +1 -1
  68. package/dist/tools/csa.tools.d.ts.map +1 -1
  69. package/dist/tools/csa.tools.js +13 -4
  70. package/dist/tools/csa.tools.js.map +1 -1
  71. package/dist/tools/dynamic-data.tools.d.ts.map +1 -1
  72. package/dist/tools/dynamic-data.tools.js +83 -28
  73. package/dist/tools/dynamic-data.tools.js.map +1 -1
  74. package/dist/tools/glossary.tools.d.ts +2 -1
  75. package/dist/tools/glossary.tools.d.ts.map +1 -1
  76. package/dist/tools/glossary.tools.js +30 -1
  77. package/dist/tools/glossary.tools.js.map +1 -1
  78. package/dist/tools/infographic.tools.d.ts.map +1 -1
  79. package/dist/tools/infographic.tools.js +7 -9
  80. package/dist/tools/infographic.tools.js.map +1 -1
  81. package/dist/tools/news.tools.d.ts.map +1 -1
  82. package/dist/tools/news.tools.js +2 -7
  83. package/dist/tools/news.tools.js.map +1 -1
  84. package/dist/tools/publication.tools.d.ts.map +1 -1
  85. package/dist/tools/publication.tools.js +12 -4
  86. package/dist/tools/publication.tools.js.map +1 -1
  87. package/dist/tools/reference.tools.d.ts.map +1 -1
  88. package/dist/tools/reference.tools.js +3 -1
  89. package/dist/tools/reference.tools.js.map +1 -1
  90. package/dist/tools/search.tools.d.ts.map +1 -1
  91. package/dist/tools/search.tools.js +71 -7
  92. package/dist/tools/search.tools.js.map +1 -1
  93. package/dist/tools/smart.tools.d.ts.map +1 -1
  94. package/dist/tools/smart.tools.js +364 -416
  95. package/dist/tools/smart.tools.js.map +1 -1
  96. package/dist/tools/static-table.tools.d.ts.map +1 -1
  97. package/dist/tools/static-table.tools.js +4 -3
  98. package/dist/tools/static-table.tools.js.map +1 -1
  99. package/dist/tools/trade.tools.d.ts.map +1 -1
  100. package/dist/tools/trade.tools.js +53 -7
  101. package/dist/tools/trade.tools.js.map +1 -1
  102. package/dist/utils/error.d.ts +11 -1
  103. package/dist/utils/error.d.ts.map +1 -1
  104. package/dist/utils/error.js +55 -2
  105. package/dist/utils/error.js.map +1 -1
  106. package/dist/utils/html.d.ts +9 -0
  107. package/dist/utils/html.d.ts.map +1 -0
  108. package/dist/utils/html.js +77 -0
  109. package/dist/utils/html.js.map +1 -0
  110. package/package.json +10 -10
@@ -18,6 +18,44 @@ const PATH_PARAMS = new Set(["domain", "key", "lang", "id", "var", "th", "turvar
18
18
  const TRADE_PATH_PARAMS = new Set(["sumber", "kodehs", "jenishs", "tahun", "periode", "lang", "key"]);
19
19
  /** Parameters that go into the URL path for interoperabilitas endpoints */
20
20
  const INTEROP_PATH_PARAMS = new Set(["datasource", "id", "kegiatan", "topik", "wilayah", "key"]);
21
+ /**
22
+ * BPS accepts multiple values separated by semicolons (not commas) and ranges
23
+ * with colons. Users naturally type commas, so normalize them before building
24
+ * the path. See the API error: "'th' parameter is required (integer),
25
+ * separated by colon (:) for range or semicolon (;) for multiple values".
26
+ */
27
+ const MULTI_VALUE_PARAMS = new Set([
28
+ "var",
29
+ "th",
30
+ "turvar",
31
+ "vervar",
32
+ "turth",
33
+ "subject",
34
+ "subcat",
35
+ "kegiatan",
36
+ "topik",
37
+ "wilayah",
38
+ ]);
39
+ export function normalizePathParam(key, value) {
40
+ let normalized = String(value).trim();
41
+ if (MULTI_VALUE_PARAMS.has(key)) {
42
+ normalized = normalized
43
+ .replace(/\s*[,;]\s*/g, ";")
44
+ .replace(/;+/g, ";")
45
+ .replace(/^;|;$/g, "");
46
+ }
47
+ return normalized;
48
+ }
49
+ /**
50
+ * Encode a path segment while leaving the BPS multi-value (`;`) and range (`:`)
51
+ * separators intact. `encodeURIComponent` would turn them into `%3B`/`%3A`,
52
+ * which the API does not accept.
53
+ */
54
+ export function encodePathValue(value) {
55
+ return encodeURIComponent(String(value))
56
+ .replace(/%3B/gi, ";")
57
+ .replace(/%3A/gi, ":");
58
+ }
21
59
  /**
22
60
  * Build a list URL: /api/list/model/{model}/param1/val1/.../key/{key}/?queryparams
23
61
  */
@@ -28,7 +66,7 @@ export function buildListUrl(baseUrl, model, params) {
28
66
  if (value === undefined || value === "")
29
67
  continue;
30
68
  if (PATH_PARAMS.has(key)) {
31
- path += `/${key}/${encodeURIComponent(String(value))}`;
69
+ path += `/${key}/${encodePathValue(normalizePathParam(key, value))}`;
32
70
  }
33
71
  else {
34
72
  queryParams[key] = String(value);
@@ -53,7 +91,7 @@ export function buildViewUrl(baseUrl, model, params) {
53
91
  if (value === undefined || value === "")
54
92
  continue;
55
93
  if (PATH_PARAMS.has(key)) {
56
- path += `/${key}/${encodeURIComponent(String(value))}`;
94
+ path += `/${key}/${encodePathValue(normalizePathParam(key, value))}`;
57
95
  }
58
96
  else {
59
97
  queryParams[key] = String(value);
@@ -75,7 +113,7 @@ export function buildDomainUrl(baseUrl, params) {
75
113
  for (const [key, value] of Object.entries(params)) {
76
114
  if (value === undefined || value === "")
77
115
  continue;
78
- path += `/${key}/${encodeURIComponent(String(value))}`;
116
+ path += `/${key}/${encodePathValue(normalizePathParam(key, value))}`;
79
117
  }
80
118
  if (!path.endsWith("/"))
81
119
  path += "/";
@@ -91,7 +129,7 @@ export function buildTradeUrl(baseUrl, params) {
91
129
  if (value === undefined || value === "")
92
130
  continue;
93
131
  if (TRADE_PATH_PARAMS.has(key)) {
94
- path += `/${key}/${encodeURIComponent(String(value))}`;
132
+ path += `/${key}/${encodePathValue(normalizePathParam(key, value))}`;
95
133
  }
96
134
  else {
97
135
  queryParams[key] = String(value);
@@ -115,7 +153,7 @@ export function buildInteropUrl(baseUrl, datasource, params) {
115
153
  if (value === undefined || value === "")
116
154
  continue;
117
155
  if (INTEROP_PATH_PARAMS.has(key)) {
118
- path += `/${key}/${encodeURIComponent(String(value))}`;
156
+ path += `/${key}/${encodePathValue(normalizePathParam(key, value))}`;
119
157
  }
120
158
  else {
121
159
  queryParams[key] = String(value);
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/client/endpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/client/endpoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * BPS WebAPI returns two different metadata shapes:
3
+ *
4
+ * - List endpoints (var, vervar, th, turth, ...) use fields such as
5
+ * `th_id`/`th`, `kode_ver_id`/`vervar`, `turth_id`/`turth`.
6
+ * - The dynamic-data endpoint returns the same metadata as `{ val, label }`.
7
+ *
8
+ * These helpers normalize both shapes so tools and formatters don't have to
9
+ * guess (and don't print "undefined" when the schema differs).
10
+ */
11
+ export declare function getVariableId(variable: unknown): string;
12
+ export declare function getVariableTitle(variable: unknown): string;
13
+ export declare function getVariableUnit(variable: unknown): string | undefined;
14
+ export declare function getVervarId(vervar: unknown): string;
15
+ export declare function getVervarLabel(vervar: unknown): string;
16
+ export declare function getVervarGroup(vervar: unknown): string;
17
+ export declare function getTurvarId(turvar: unknown): string;
18
+ export declare function getTurvarLabel(turvar: unknown): string;
19
+ export declare function getTurvarGroup(turvar: unknown): string;
20
+ export declare function getPeriodId(period: unknown): string;
21
+ export declare function getPeriodLabel(period: unknown): string;
22
+ export declare function getTurthId(turth: unknown): string;
23
+ export declare function getTurthLabel(turth: unknown): string;
24
+ export declare function isNeutralPeriodLabel(label: string | undefined): boolean;
25
+ /** Format an indicator unit for display, hiding BPS' literal "null". */
26
+ export declare function formatUnit(unit: string | null | undefined): string;
27
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/client/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAGvD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASrE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGtD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGtD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGtD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGtD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAGtD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGpD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUvE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKlE"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * BPS WebAPI returns two different metadata shapes:
3
+ *
4
+ * - List endpoints (var, vervar, th, turth, ...) use fields such as
5
+ * `th_id`/`th`, `kode_ver_id`/`vervar`, `turth_id`/`turth`.
6
+ * - The dynamic-data endpoint returns the same metadata as `{ val, label }`.
7
+ *
8
+ * These helpers normalize both shapes so tools and formatters don't have to
9
+ * guess (and don't print "undefined" when the schema differs).
10
+ */
11
+ function firstDefined(bag, ...keys) {
12
+ if (!bag)
13
+ return undefined;
14
+ for (const key of keys) {
15
+ const value = bag[key];
16
+ if (value !== undefined && value !== null && value !== "")
17
+ return value;
18
+ }
19
+ return undefined;
20
+ }
21
+ function asString(value) {
22
+ return value === undefined || value === null ? "" : String(value);
23
+ }
24
+ export function getVariableId(variable) {
25
+ const bag = variable;
26
+ return asString(firstDefined(bag, "var_id", "val", "id"));
27
+ }
28
+ export function getVariableTitle(variable) {
29
+ const bag = variable;
30
+ return asString(firstDefined(bag, "title", "label", "var_name"));
31
+ }
32
+ export function getVariableUnit(variable) {
33
+ const bag = variable;
34
+ const unit = asString(firstDefined(bag, "unit", "satuan"));
35
+ if (!unit)
36
+ return undefined;
37
+ const normalized = unit.trim();
38
+ if (!normalized || normalized.toLowerCase() === "null")
39
+ return undefined;
40
+ if (normalized.toLowerCase() === "tidak ada satuan")
41
+ return undefined;
42
+ if (normalized === "-")
43
+ return undefined;
44
+ return normalized;
45
+ }
46
+ export function getVervarId(vervar) {
47
+ const bag = vervar;
48
+ return asString(firstDefined(bag, "kode_vervar", "kode_ver_id", "val", "id"));
49
+ }
50
+ export function getVervarLabel(vervar) {
51
+ const bag = vervar;
52
+ return asString(firstDefined(bag, "label_vervar", "vervar", "label"));
53
+ }
54
+ export function getVervarGroup(vervar) {
55
+ const bag = vervar;
56
+ return asString(firstDefined(bag, "name_group_vervar", "name_group_ver_id"));
57
+ }
58
+ export function getTurvarId(turvar) {
59
+ const bag = turvar;
60
+ return asString(firstDefined(bag, "kode_turvar", "kode_tur_id", "turvar_id", "val", "id"));
61
+ }
62
+ export function getTurvarLabel(turvar) {
63
+ const bag = turvar;
64
+ return asString(firstDefined(bag, "label_turvar", "turvar", "label"));
65
+ }
66
+ export function getTurvarGroup(turvar) {
67
+ const bag = turvar;
68
+ return asString(firstDefined(bag, "name_group_turvar", "name_group_tur_id"));
69
+ }
70
+ export function getPeriodId(period) {
71
+ const bag = period;
72
+ return asString(firstDefined(bag, "th_id", "val", "id"));
73
+ }
74
+ export function getPeriodLabel(period) {
75
+ const bag = period;
76
+ return asString(firstDefined(bag, "th_name", "th", "label"));
77
+ }
78
+ export function getTurthId(turth) {
79
+ const bag = turth;
80
+ return asString(firstDefined(bag, "turth_id", "val", "id"));
81
+ }
82
+ export function getTurthLabel(turth) {
83
+ const bag = turth;
84
+ return asString(firstDefined(bag, "turth_name", "turth", "label"));
85
+ }
86
+ export function isNeutralPeriodLabel(label) {
87
+ if (!label)
88
+ return true;
89
+ const normalized = label.trim().toLowerCase();
90
+ return (normalized === "" ||
91
+ normalized.includes("tahunan") ||
92
+ normalized === "tahun" ||
93
+ normalized === "tidak ada" ||
94
+ normalized === "total");
95
+ }
96
+ /** Format an indicator unit for display, hiding BPS' literal "null". */
97
+ export function formatUnit(unit) {
98
+ if (!unit)
99
+ return "";
100
+ const normalized = String(unit).trim();
101
+ if (!normalized || normalized.toLowerCase() === "null" || normalized === "-")
102
+ return "";
103
+ return normalized;
104
+ }
105
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/client/fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Global request scheduler.
3
+ *
4
+ * BPS WebAPI rate-limits aggressively: a burst of parallel requests (an LLM
5
+ * happily fires 30 at once) immediately returns HTTP 429 and every subsequent
6
+ * call fails for a while. Agents cannot be trusted to self-throttle, so the
7
+ * throttle lives in the client.
8
+ *
9
+ * Requests are queued, run at most `maxConcurrent` at a time, and spaced by
10
+ * `minGapMs` to keep the requests-per-second rate low.
11
+ */
12
+ export declare class RequestScheduler {
13
+ private readonly maxConcurrent;
14
+ private readonly minGapMs;
15
+ private active;
16
+ /** Earliest timestamp at which the next request may start. */
17
+ private nextSlotAt;
18
+ private readonly queue;
19
+ constructor(maxConcurrent?: number, minGapMs?: number);
20
+ run<T>(task: () => Promise<T>): Promise<T>;
21
+ /** Current number of queued tasks (useful for diagnostics/tests). */
22
+ get pending(): number;
23
+ get running(): number;
24
+ private acquire;
25
+ private release;
26
+ }
27
+ /** Shared scheduler instance used by every BpsClient request. */
28
+ export declare const defaultScheduler: RequestScheduler;
29
+ //# sourceMappingURL=request-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-scheduler.d.ts","sourceRoot":"","sources":["../../src/client/request-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,MAAM,CAAK;IACnB,8DAA8D;IAC9D,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;gBAG5B,aAAa,GAAE,MAAU,EACzB,QAAQ,GAAE,MAAW;IAGlC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAShD,qEAAqE;IACrE,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;YAEa,OAAO;IAoBrB,OAAO,CAAC,OAAO;CAKhB;AAED,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,kBAG5B,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Global request scheduler.
3
+ *
4
+ * BPS WebAPI rate-limits aggressively: a burst of parallel requests (an LLM
5
+ * happily fires 30 at once) immediately returns HTTP 429 and every subsequent
6
+ * call fails for a while. Agents cannot be trusted to self-throttle, so the
7
+ * throttle lives in the client.
8
+ *
9
+ * Requests are queued, run at most `maxConcurrent` at a time, and spaced by
10
+ * `minGapMs` to keep the requests-per-second rate low.
11
+ */
12
+ export class RequestScheduler {
13
+ maxConcurrent;
14
+ minGapMs;
15
+ active = 0;
16
+ /** Earliest timestamp at which the next request may start. */
17
+ nextSlotAt = 0;
18
+ queue = [];
19
+ constructor(maxConcurrent = 4, minGapMs = 40) {
20
+ this.maxConcurrent = maxConcurrent;
21
+ this.minGapMs = minGapMs;
22
+ }
23
+ async run(task) {
24
+ await this.acquire();
25
+ try {
26
+ return await task();
27
+ }
28
+ finally {
29
+ this.release();
30
+ }
31
+ }
32
+ /** Current number of queued tasks (useful for diagnostics/tests). */
33
+ get pending() {
34
+ return this.queue.length;
35
+ }
36
+ get running() {
37
+ return this.active;
38
+ }
39
+ async acquire() {
40
+ if (this.active >= this.maxConcurrent) {
41
+ await new Promise((resolve) => this.queue.push(resolve));
42
+ }
43
+ this.active += 1;
44
+ if (this.minGapMs > 0) {
45
+ // Reserve a slot atomically so parallel acquisitions are spaced too,
46
+ // not just queued: otherwise N tasks that grab a free slot at the same
47
+ // moment all fire at once.
48
+ const now = Date.now();
49
+ const startAt = Math.max(now, this.nextSlotAt);
50
+ this.nextSlotAt = startAt + this.minGapMs;
51
+ const wait = startAt - now;
52
+ if (wait > 0) {
53
+ await new Promise((resolve) => setTimeout(resolve, wait));
54
+ }
55
+ }
56
+ }
57
+ release() {
58
+ this.active -= 1;
59
+ const next = this.queue.shift();
60
+ if (next)
61
+ next();
62
+ }
63
+ }
64
+ /** Shared scheduler instance used by every BpsClient request. */
65
+ export const defaultScheduler = new RequestScheduler(readPositiveInt(readEnv("BPS_MAX_CONCURRENCY"), 3), readPositiveInt(readEnv("BPS_MIN_REQUEST_GAP_MS"), 250));
66
+ /** Read an env var without assuming `process` exists (Cloudflare Workers). */
67
+ function readEnv(name) {
68
+ const env = globalThis.process?.env;
69
+ return env?.[name];
70
+ }
71
+ function readPositiveInt(value, fallback) {
72
+ const parsed = Number(value);
73
+ return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : fallback;
74
+ }
75
+ //# sourceMappingURL=request-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-scheduler.js","sourceRoot":"","sources":["../../src/client/request-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAgB;IAOR;IACA;IAPX,MAAM,GAAG,CAAC,CAAC;IACnB,8DAA8D;IACtD,UAAU,GAAG,CAAC,CAAC;IACN,KAAK,GAAsB,EAAE,CAAC;IAE/C,YACmB,gBAAwB,CAAC,EACzB,WAAmB,EAAE;QADrB,kBAAa,GAAb,aAAa,CAAY;QACzB,aAAQ,GAAR,QAAQ,CAAa;IACrC,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAI,IAAsB;QACjC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACtB,qEAAqE;YACrE,uEAAuE;YACvE,2BAA2B;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC1C,MAAM,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI;YAAE,IAAI,EAAE,CAAC;IACnB,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAClD,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAClD,eAAe,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,GAAG,CAAC,CACxD,CAAC;AAEF,8EAA8E;AAC9E,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,GAAG,GAAI,UAAyE,CAAC,OAAO,EAAE,GAAG,CAAC;IACpG,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,QAAgB;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/E,CAAC"}
@@ -17,8 +17,8 @@ export interface BpsSubject {
17
17
  title: string;
18
18
  subcat_id?: number;
19
19
  subcat?: string;
20
- ntabel?: number;
21
- nvar?: number;
20
+ ntabel?: number | null;
21
+ nvar?: number | null;
22
22
  }
23
23
  /** Subject Category */
24
24
  export interface BpsSubjectCategory {
@@ -37,30 +37,53 @@ export interface BpsVariable {
37
37
  graph_id?: number;
38
38
  graph_name?: string;
39
39
  }
40
- /** Vertical Variable */
40
+ /** Vertical Variable (list endpoints use `kode_ver_id`, data endpoints use `val`) */
41
41
  export interface BpsVerticalVariable {
42
- kode_vervar: number;
43
- label_vervar: string;
44
- group_vervar: number;
45
- name_group_vervar: string;
42
+ kode_vervar?: number;
43
+ kode_ver_id?: number;
44
+ label_vervar?: string;
45
+ vervar?: string;
46
+ group_vervar?: number;
47
+ group_ver_id?: number;
48
+ name_group_vervar?: string;
49
+ name_group_ver_id?: string;
50
+ val?: number | string;
51
+ label?: string;
46
52
  }
47
53
  /** Derived Variable */
48
54
  export interface BpsDerivedVariable {
49
- kode_turvar: number;
50
- label_turvar: string;
51
- group_turvar: number;
52
- name_group_turvar: string;
55
+ kode_turvar?: number;
56
+ kode_tur_id?: number;
57
+ turvar_id?: number;
58
+ label_turvar?: string;
59
+ turvar?: string;
60
+ group_turvar?: number;
61
+ group_tur_id?: number;
62
+ group_turvar_id?: number;
63
+ name_group_turvar?: string;
64
+ name_group_tur_id?: string;
65
+ val?: number | string;
66
+ label?: string;
53
67
  }
54
- /** Period */
68
+ /** Period (list endpoints use `th`, data endpoints use `label`) */
55
69
  export interface BpsPeriod {
56
- th_id: number;
57
- th_name: string;
58
- val: number;
70
+ th_id?: number;
71
+ th_name?: string;
72
+ th?: string;
73
+ val?: number | string;
74
+ label?: string;
75
+ var_id?: number;
76
+ var_name?: string;
59
77
  }
60
78
  /** Derived Period */
61
79
  export interface BpsDerivedPeriod {
62
- turth_id: number;
63
- turth_name: string;
80
+ turth_id?: number;
81
+ turth_name?: string;
82
+ turth?: string;
83
+ group_turth_id?: number;
84
+ name_group_turth?: string;
85
+ val?: number | string;
86
+ label?: string;
64
87
  }
65
88
  /** Unit */
66
89
  export interface BpsUnit {
@@ -88,7 +111,7 @@ export interface BpsStaticTable {
88
111
  title: string;
89
112
  subj_id: number;
90
113
  subj?: string;
91
- updt_date: string;
114
+ updt_date: string | null;
92
115
  size: string;
93
116
  excel?: string;
94
117
  }
@@ -99,7 +122,7 @@ export interface BpsStaticTableDetail {
99
122
  subj_id: number;
100
123
  subj?: string;
101
124
  table: string;
102
- updt_date: string;
125
+ updt_date: string | null;
103
126
  size: string;
104
127
  excel?: string;
105
128
  }
@@ -135,7 +158,7 @@ export interface BpsStrategicIndicator {
135
158
  name?: string;
136
159
  data_source?: string;
137
160
  value: number | string;
138
- unit: string;
161
+ unit: string | null;
139
162
  category?: number;
140
163
  hash_id?: string;
141
164
  periode: string;
@@ -148,7 +171,7 @@ export interface BpsInfographic {
148
171
  inf_id: number;
149
172
  title: string;
150
173
  img: string;
151
- date: string;
174
+ date: string | null;
152
175
  desc: string;
153
176
  category: number;
154
177
  dl: string;
@@ -228,7 +251,8 @@ export interface BpsCsaTable {
228
251
  id_subject: number;
229
252
  subject: string;
230
253
  id_subcat: number;
231
- subcat: string;
254
+ subcat?: string;
255
+ subcat_name?: string;
232
256
  tablesource: string;
233
257
  last_update: string;
234
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Crosswalk for indicators that BPS publishes **per kabupaten/kota**, but only
3
+ * inside each provincial domain (there is no national kab/kota table).
4
+ *
5
+ * Without this map a client has to sweep 34 provincial domains, guess a
6
+ * variable name in each one, and still get the wrong table half the time.
7
+ * The var_ids below were verified against BPS WebAPI; when BPS revises a
8
+ * table the sweep falls back to keyword discovery (`searchVariables`).
9
+ *
10
+ * Add new indicators here as they are verified — one entry replaces dozens of
11
+ * discovery calls.
12
+ */
13
+ export interface KabkotaIndicatorHint {
14
+ /** Stable identifier used in logs/tests. */
15
+ id: string;
16
+ /** Human label for the indicator. */
17
+ label: string;
18
+ /** Query pattern that should use this crosswalk. */
19
+ pattern: RegExp;
20
+ /** Province domain → var_id of the kabupaten/kota table. */
21
+ variables: Record<string, string>;
22
+ /**
23
+ * Province domains that publish the indicator only as province totals
24
+ * (no kab/kota breakdown in WebAPI). They are reported as "not covered".
25
+ */
26
+ unavailable: Record<string, string>;
27
+ }
28
+ export declare const KABKOTA_INDICATORS: KabkotaIndicatorHint[];
29
+ export declare function findKabkotaIndicator(query: string): KabkotaIndicatorHint | null;
30
+ //# sourceMappingURL=kabkota-indicators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kabkota-indicators.d.ts","sourceRoot":"","sources":["../../src/config/kabkota-indicators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,kBAAkB,EAAE,oBAAoB,EA4CpD,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAE/E"}
@@ -0,0 +1,49 @@
1
+ export const KABKOTA_INDICATORS = [
2
+ {
3
+ id: "tpt",
4
+ label: "Tingkat Pengangguran Terbuka (TPT) menurut Kabupaten/Kota",
5
+ pattern: /\b(tpt|pengangguran|penganggur|unemployment)\b/i,
6
+ variables: {
7
+ "1100": "206",
8
+ "1200": "44",
9
+ "1300": "139",
10
+ "1400": "42",
11
+ "1500": "844",
12
+ "1800": "47",
13
+ "1900": "95",
14
+ "2100": "224",
15
+ "3200": "73",
16
+ "3300": "64",
17
+ "3500": "54",
18
+ "3600": "157",
19
+ "6100": "51",
20
+ "6200": "389",
21
+ "6300": "37",
22
+ "6400": "59",
23
+ "6500": "115",
24
+ "7200": "92",
25
+ "7300": "466",
26
+ "7400": "395",
27
+ "7500": "184",
28
+ "7600": "520",
29
+ "8100": "108",
30
+ "8200": "250",
31
+ "9100": "270",
32
+ },
33
+ unavailable: {
34
+ "1600": "Hanya tersedia angka provinsi (TPT Sumatera Selatan)",
35
+ "1700": "Hanya tersedia angka provinsi + tabel statis 2022",
36
+ "3100": "DKI Jakarta hanya satu level kota administrasi",
37
+ "3400": "Hanya tersedia angka provinsi (TPT D.I. Yogyakarta)",
38
+ "5100": "Tabel 'Persentase Pengangguran' memakai denominasi berbeda",
39
+ "5200": "Hanya tersedia angka provinsi (TPT NTB)",
40
+ "5300": "Hanya tersedia angka provinsi (TPT NTT)",
41
+ "7100": "Tidak ada tabel TPT kab/kota; hanya jumlah pengangguran (jiwa)",
42
+ "9400": "Tabel TPT kab/kota tersedia sebagai tabel statis, bukan WebAPI",
43
+ },
44
+ },
45
+ ];
46
+ export function findKabkotaIndicator(query) {
47
+ return KABKOTA_INDICATORS.find((indicator) => indicator.pattern.test(query)) ?? null;
48
+ }
49
+ //# sourceMappingURL=kabkota-indicators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kabkota-indicators.js","sourceRoot":"","sources":["../../src/config/kabkota-indicators.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,2DAA2D;QAClE,OAAO,EAAE,iDAAiD;QAC1D,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;SACd;QACD,WAAW,EAAE;YACX,MAAM,EAAE,sDAAsD;YAC9D,MAAM,EAAE,mDAAmD;YAC3D,MAAM,EAAE,gDAAgD;YACxD,MAAM,EAAE,qDAAqD;YAC7D,MAAM,EAAE,4DAA4D;YACpE,MAAM,EAAE,yCAAyC;YACjD,MAAM,EAAE,yCAAyC;YACjD,MAAM,EAAE,gEAAgE;YACxE,MAAM,EAAE,gEAAgE;SACzE;KACF;CACF,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;AACvF,CAAC"}
package/dist/index.js CHANGED
@@ -24,6 +24,25 @@ async function main() {
24
24
  const cache = config.cacheEnabled ? new InMemoryCache(config.cacheMaxEntries) : null;
25
25
  const store = new FileStore(undefined, config.apiKey);
26
26
  const { server } = createServer(config, auth, cache, store, pkg.version);
27
+ // The learned-variable store writes with a debounce; flush it on shutdown
28
+ // so mappings are not lost when the MCP client closes the process.
29
+ const flushStore = () => {
30
+ try {
31
+ store.flushNow();
32
+ }
33
+ catch {
34
+ // Best effort during shutdown.
35
+ }
36
+ };
37
+ process.once("exit", flushStore);
38
+ process.once("SIGINT", () => {
39
+ flushStore();
40
+ process.exit(0);
41
+ });
42
+ process.once("SIGTERM", () => {
43
+ flushStore();
44
+ process.exit(0);
45
+ });
27
46
  await startStdioTransport(server);
28
47
  }
29
48
  catch (error) {