ris-mcp-ts 1.0.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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +490 -0
  3. package/dist/client.d.ts +109 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +371 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/constants.d.ts +67 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +168 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/formatting.d.ts +70 -0
  12. package/dist/formatting.d.ts.map +1 -0
  13. package/dist/formatting.js +366 -0
  14. package/dist/formatting.js.map +1 -0
  15. package/dist/helpers.d.ts +46 -0
  16. package/dist/helpers.d.ts.map +1 -0
  17. package/dist/helpers.js +92 -0
  18. package/dist/helpers.js.map +1 -0
  19. package/dist/index.d.ts +9 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +21 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/parser.d.ts +48 -0
  24. package/dist/parser.d.ts.map +1 -0
  25. package/dist/parser.js +240 -0
  26. package/dist/parser.js.map +1 -0
  27. package/dist/server.d.ts +11 -0
  28. package/dist/server.d.ts.map +1 -0
  29. package/dist/server.js +16 -0
  30. package/dist/server.js.map +1 -0
  31. package/dist/tools/bezirke.d.ts +6 -0
  32. package/dist/tools/bezirke.d.ts.map +1 -0
  33. package/dist/tools/bezirke.js +68 -0
  34. package/dist/tools/bezirke.js.map +1 -0
  35. package/dist/tools/bundesgesetzblatt.d.ts +6 -0
  36. package/dist/tools/bundesgesetzblatt.d.ts.map +1 -0
  37. package/dist/tools/bundesgesetzblatt.js +55 -0
  38. package/dist/tools/bundesgesetzblatt.js.map +1 -0
  39. package/dist/tools/bundesrecht.d.ts +6 -0
  40. package/dist/tools/bundesrecht.d.ts.map +1 -0
  41. package/dist/tools/bundesrecht.js +63 -0
  42. package/dist/tools/bundesrecht.js.map +1 -0
  43. package/dist/tools/dokument.d.ts +6 -0
  44. package/dist/tools/dokument.d.ts.map +1 -0
  45. package/dist/tools/dokument.js +244 -0
  46. package/dist/tools/dokument.js.map +1 -0
  47. package/dist/tools/gemeinden.d.ts +6 -0
  48. package/dist/tools/gemeinden.d.ts.map +1 -0
  49. package/dist/tools/gemeinden.js +125 -0
  50. package/dist/tools/gemeinden.js.map +1 -0
  51. package/dist/tools/history.d.ts +6 -0
  52. package/dist/tools/history.d.ts.map +1 -0
  53. package/dist/tools/history.js +65 -0
  54. package/dist/tools/history.js.map +1 -0
  55. package/dist/tools/index.d.ts +12 -0
  56. package/dist/tools/index.d.ts.map +1 -0
  57. package/dist/tools/index.js +36 -0
  58. package/dist/tools/index.js.map +1 -0
  59. package/dist/tools/judikatur.d.ts +6 -0
  60. package/dist/tools/judikatur.d.ts.map +1 -0
  61. package/dist/tools/judikatur.js +46 -0
  62. package/dist/tools/judikatur.js.map +1 -0
  63. package/dist/tools/landesgesetzblatt.d.ts +6 -0
  64. package/dist/tools/landesgesetzblatt.d.ts.map +1 -0
  65. package/dist/tools/landesgesetzblatt.js +60 -0
  66. package/dist/tools/landesgesetzblatt.js.map +1 -0
  67. package/dist/tools/landesrecht.d.ts +6 -0
  68. package/dist/tools/landesrecht.d.ts.map +1 -0
  69. package/dist/tools/landesrecht.js +51 -0
  70. package/dist/tools/landesrecht.js.map +1 -0
  71. package/dist/tools/regierungsvorlagen.d.ts +6 -0
  72. package/dist/tools/regierungsvorlagen.d.ts.map +1 -0
  73. package/dist/tools/regierungsvorlagen.js +97 -0
  74. package/dist/tools/regierungsvorlagen.js.map +1 -0
  75. package/dist/tools/sonstige.d.ts +6 -0
  76. package/dist/tools/sonstige.d.ts.map +1 -0
  77. package/dist/tools/sonstige.js +271 -0
  78. package/dist/tools/sonstige.js.map +1 -0
  79. package/dist/tools/verordnungen.d.ts +6 -0
  80. package/dist/tools/verordnungen.d.ts.map +1 -0
  81. package/dist/tools/verordnungen.js +68 -0
  82. package/dist/tools/verordnungen.js.map +1 -0
  83. package/dist/types.d.ts +471 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +151 -0
  86. package/dist/types.js.map +1 -0
  87. package/package.json +87 -0
package/dist/client.js ADDED
@@ -0,0 +1,371 @@
1
+ /**
2
+ * HTTP client for the Austrian RIS (Rechtsinformationssystem) API v2.6.
3
+ *
4
+ * This module provides a client for querying the Austrian legal information
5
+ * system API, which includes federal law, state law, case law, and other legal
6
+ * documents.
7
+ *
8
+ * API Documentation: https://data.bka.gv.at/ris/api/v2.6/
9
+ */
10
+ // =============================================================================
11
+ // Custom Errors
12
+ // =============================================================================
13
+ /**
14
+ * Base exception for RIS API errors.
15
+ */
16
+ export class RISAPIError extends Error {
17
+ statusCode;
18
+ constructor(message, statusCode) {
19
+ super(message);
20
+ this.name = 'RISAPIError';
21
+ this.statusCode = statusCode;
22
+ }
23
+ }
24
+ /**
25
+ * Raised when a request to the RIS API times out.
26
+ */
27
+ export class RISTimeoutError extends RISAPIError {
28
+ constructor(message = 'Request to RIS API timed out') {
29
+ super(message);
30
+ this.name = 'RISTimeoutError';
31
+ }
32
+ }
33
+ /**
34
+ * Raised when JSON parsing fails.
35
+ */
36
+ export class RISParsingError extends RISAPIError {
37
+ originalError;
38
+ constructor(message, originalError) {
39
+ super(message);
40
+ this.name = 'RISParsingError';
41
+ this.originalError = originalError;
42
+ }
43
+ }
44
+ // =============================================================================
45
+ // RIS Client
46
+ // =============================================================================
47
+ const BASE_URL = 'https://data.bka.gv.at/ris/api/v2.6/';
48
+ const DEFAULT_TIMEOUT = 30000; // 30 seconds in milliseconds
49
+ /**
50
+ * Allowed hostnames for document content fetching (SSRF protection).
51
+ */
52
+ const ALLOWED_DOCUMENT_HOSTNAMES = ['data.bka.gv.at', 'www.ris.bka.gv.at', 'ris.bka.gv.at'];
53
+ /**
54
+ * Validate that a URL points to an allowed RIS domain (HTTPS only).
55
+ */
56
+ export function isAllowedUrl(url) {
57
+ try {
58
+ const parsed = new URL(url);
59
+ return parsed.protocol === 'https:' && ALLOWED_DOCUMENT_HOSTNAMES.includes(parsed.hostname);
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ /**
66
+ * Build query parameters for API request.
67
+ * Converts all values to strings and filters out undefined/null values.
68
+ */
69
+ function buildParams(params) {
70
+ const searchParams = new URLSearchParams();
71
+ for (const [key, value] of Object.entries(params)) {
72
+ if (value !== undefined && value !== null) {
73
+ searchParams.set(key, String(value));
74
+ }
75
+ }
76
+ return searchParams;
77
+ }
78
+ /**
79
+ * Parse JSON response from the RIS API.
80
+ */
81
+ function parseJsonResponse(jsonContent) {
82
+ try {
83
+ return JSON.parse(jsonContent);
84
+ }
85
+ catch (e) {
86
+ throw new RISParsingError(`Failed to parse JSON response: ${e instanceof Error ? e.message : String(e)}`, e instanceof Error ? e : undefined);
87
+ }
88
+ }
89
+ /**
90
+ * Extract and normalize search results from parsed API response.
91
+ */
92
+ function extractSearchResults(parsedResponse) {
93
+ const searchResult = parsedResponse.OgdSearchResult ?? {};
94
+ const documentResults = searchResult.OgdDocumentResults ?? {};
95
+ // Extract pagination info from Hits element
96
+ const hitsInfo = documentResults.Hits;
97
+ let totalHits = 0;
98
+ let pageNumber = 1;
99
+ let pageSize = 10;
100
+ if (typeof hitsInfo === 'object' && hitsInfo !== null) {
101
+ const hitsObj = hitsInfo;
102
+ totalHits = Number(hitsObj['#text'] ?? 0);
103
+ pageNumber = Number(hitsObj['@pageNumber'] ?? 1);
104
+ pageSize = Number(hitsObj['@pageSize'] ?? 10);
105
+ }
106
+ else if (hitsInfo !== undefined && hitsInfo !== null) {
107
+ totalHits = Number(hitsInfo);
108
+ }
109
+ // Extract document references
110
+ let docRefs = documentResults.OgdDocumentReference;
111
+ // Ensure docRefs is always an array
112
+ if (docRefs === undefined || docRefs === null) {
113
+ docRefs = [];
114
+ }
115
+ else if (!Array.isArray(docRefs)) {
116
+ docRefs = [docRefs];
117
+ }
118
+ return {
119
+ hits: totalHits,
120
+ page_number: pageNumber,
121
+ page_size: pageSize,
122
+ documents: docRefs,
123
+ };
124
+ }
125
+ /**
126
+ * Make a request to the RIS API.
127
+ */
128
+ async function request(endpoint, params, timeout = DEFAULT_TIMEOUT) {
129
+ const url = new URL(endpoint, BASE_URL);
130
+ url.search = buildParams(params).toString();
131
+ const controller = new AbortController();
132
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
133
+ try {
134
+ const response = await fetch(url.toString(), {
135
+ method: 'GET',
136
+ headers: {
137
+ Accept: 'application/json',
138
+ },
139
+ signal: controller.signal,
140
+ });
141
+ clearTimeout(timeoutId);
142
+ if (!response.ok) {
143
+ const text = await response.text();
144
+ throw new RISAPIError(`HTTP error ${response.status} for ${endpoint}: ${text}`, response.status);
145
+ }
146
+ const jsonText = await response.text();
147
+ const parsed = parseJsonResponse(jsonText);
148
+ return extractSearchResults(parsed);
149
+ }
150
+ catch (e) {
151
+ clearTimeout(timeoutId);
152
+ if (e instanceof RISAPIError || e instanceof RISParsingError) {
153
+ throw e;
154
+ }
155
+ if (e instanceof Error) {
156
+ if (e.name === 'AbortError') {
157
+ throw new RISTimeoutError(`Request to ${endpoint} timed out after ${timeout}ms`);
158
+ }
159
+ throw new RISAPIError(`Request failed for ${endpoint}: ${e.message}`);
160
+ }
161
+ throw new RISAPIError(`Request failed for ${endpoint}: ${String(e)}`);
162
+ }
163
+ }
164
+ /**
165
+ * Search federal law (Bundesrecht).
166
+ */
167
+ export async function searchBundesrecht(params, timeout = DEFAULT_TIMEOUT) {
168
+ return request('Bundesrecht', params, timeout);
169
+ }
170
+ /**
171
+ * Search state/provincial law (Landesrecht).
172
+ */
173
+ export async function searchLandesrecht(params, timeout = DEFAULT_TIMEOUT) {
174
+ return request('Landesrecht', params, timeout);
175
+ }
176
+ /**
177
+ * Search case law/jurisprudence (Judikatur).
178
+ */
179
+ export async function searchJudikatur(params, timeout = DEFAULT_TIMEOUT) {
180
+ return request('Judikatur', params, timeout);
181
+ }
182
+ /**
183
+ * Search district administrative authorities (Bezirke).
184
+ */
185
+ export async function searchBezirke(params, timeout = DEFAULT_TIMEOUT) {
186
+ return request('Bezirke', params, timeout);
187
+ }
188
+ /**
189
+ * Search municipal law (Gemeinden).
190
+ */
191
+ export async function searchGemeinden(params, timeout = DEFAULT_TIMEOUT) {
192
+ return request('Gemeinden', params, timeout);
193
+ }
194
+ /**
195
+ * Search miscellaneous legal collections (Sonstige).
196
+ */
197
+ export async function searchSonstige(params, timeout = DEFAULT_TIMEOUT) {
198
+ return request('Sonstige', params, timeout);
199
+ }
200
+ /**
201
+ * Search document change history (History).
202
+ */
203
+ export async function searchHistory(params, timeout = DEFAULT_TIMEOUT) {
204
+ return request('History', params, timeout);
205
+ }
206
+ /**
207
+ * Fetch HTML content from a document URL.
208
+ */
209
+ export async function getDocumentContent(url, timeout = DEFAULT_TIMEOUT) {
210
+ const controller = new AbortController();
211
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
212
+ try {
213
+ const response = await fetch(url, {
214
+ method: 'GET',
215
+ signal: controller.signal,
216
+ });
217
+ clearTimeout(timeoutId);
218
+ if (!response.ok) {
219
+ const text = await response.text();
220
+ throw new RISAPIError(`HTTP error ${response.status} fetching document: ${text}`, response.status);
221
+ }
222
+ return await response.text();
223
+ }
224
+ catch (e) {
225
+ clearTimeout(timeoutId);
226
+ if (e instanceof RISAPIError) {
227
+ throw e;
228
+ }
229
+ if (e instanceof Error) {
230
+ if (e.name === 'AbortError') {
231
+ throw new RISTimeoutError(`Request to document URL timed out after ${timeout}ms`);
232
+ }
233
+ throw new RISAPIError(`Request failed fetching document: ${e.message}`);
234
+ }
235
+ throw new RISAPIError(`Request failed fetching document: ${String(e)}`);
236
+ }
237
+ }
238
+ // =============================================================================
239
+ // Direct Document URL Construction
240
+ // =============================================================================
241
+ /**
242
+ * Validate dokumentnummer contains only safe characters.
243
+ * Defense-in-depth check in addition to Zod schema.
244
+ *
245
+ * Valid dokumentnummern:
246
+ * - Start with uppercase letter
247
+ * - Contain only uppercase letters, digits, and underscores
248
+ * - Length between 5 and 50 characters
249
+ *
250
+ * Examples: NOR40052761, BVWG_W123_2000000_1_00
251
+ */
252
+ export function isValidDokumentnummer(dokumentnummer) {
253
+ if (dokumentnummer.length < 5 || dokumentnummer.length > 50) {
254
+ return false;
255
+ }
256
+ // Only uppercase letters, digits, underscores allowed
257
+ // Must start with uppercase letter
258
+ return /^[A-Z][A-Z0-9_]+$/.test(dokumentnummer);
259
+ }
260
+ /**
261
+ * URL patterns for different document types based on Dokumentnummer prefix.
262
+ * The {dokumentnummer} placeholder will be replaced with the actual document number.
263
+ */
264
+ const DOCUMENT_URL_PATTERNS = {
265
+ // Bundesrecht (Federal Law)
266
+ NOR: 'https://ris.bka.gv.at/Dokumente/Bundesnormen/{dokumentnummer}/{dokumentnummer}.html',
267
+ // Landesrecht (State Law) - one prefix per state
268
+ LBG: 'https://ris.bka.gv.at/Dokumente/LrBgld/{dokumentnummer}/{dokumentnummer}.html',
269
+ LKT: 'https://ris.bka.gv.at/Dokumente/LrK/{dokumentnummer}/{dokumentnummer}.html',
270
+ LNO: 'https://ris.bka.gv.at/Dokumente/LrNO/{dokumentnummer}/{dokumentnummer}.html',
271
+ LOO: 'https://ris.bka.gv.at/Dokumente/LrOO/{dokumentnummer}/{dokumentnummer}.html',
272
+ LSB: 'https://ris.bka.gv.at/Dokumente/LrSbg/{dokumentnummer}/{dokumentnummer}.html',
273
+ LST: 'https://ris.bka.gv.at/Dokumente/LrStmk/{dokumentnummer}/{dokumentnummer}.html',
274
+ LTI: 'https://ris.bka.gv.at/Dokumente/LrT/{dokumentnummer}/{dokumentnummer}.html',
275
+ LVB: 'https://ris.bka.gv.at/Dokumente/LrVbg/{dokumentnummer}/{dokumentnummer}.html',
276
+ LWI: 'https://ris.bka.gv.at/Dokumente/LrW/{dokumentnummer}/{dokumentnummer}.html',
277
+ // Judikatur (Case Law)
278
+ JWR: 'https://ris.bka.gv.at/Dokumente/Vwgh/{dokumentnummer}/{dokumentnummer}.html',
279
+ JFR: 'https://ris.bka.gv.at/Dokumente/Vfgh/{dokumentnummer}/{dokumentnummer}.html',
280
+ JFT: 'https://ris.bka.gv.at/Dokumente/Vfgh/{dokumentnummer}/{dokumentnummer}.html',
281
+ JWT: 'https://ris.bka.gv.at/Dokumente/Justiz/{dokumentnummer}/{dokumentnummer}.html',
282
+ JJR: 'https://ris.bka.gv.at/Dokumente/Justiz/{dokumentnummer}/{dokumentnummer}.html',
283
+ BVWG: 'https://ris.bka.gv.at/Dokumente/Bvwg/{dokumentnummer}/{dokumentnummer}.html',
284
+ LVWG: 'https://ris.bka.gv.at/Dokumente/Lvwg/{dokumentnummer}/{dokumentnummer}.html',
285
+ DSB: 'https://ris.bka.gv.at/Dokumente/Dsk/{dokumentnummer}/{dokumentnummer}.html',
286
+ GBK: 'https://ris.bka.gv.at/Dokumente/Gbk/{dokumentnummer}/{dokumentnummer}.html',
287
+ PVAK: 'https://ris.bka.gv.at/Dokumente/Pvak/{dokumentnummer}/{dokumentnummer}.html',
288
+ ASYLGH: 'https://ris.bka.gv.at/Dokumente/AsylGH/{dokumentnummer}/{dokumentnummer}.html',
289
+ // Bundesgesetzblätter (Federal Law Gazettes)
290
+ BGBLA: 'https://ris.bka.gv.at/Dokumente/BgblAuth/{dokumentnummer}/{dokumentnummer}.html',
291
+ BGBL: 'https://ris.bka.gv.at/Dokumente/BgblAlt/{dokumentnummer}/{dokumentnummer}.html',
292
+ BGBLPDF: 'https://ris.bka.gv.at/Dokumente/BgblPdf/{dokumentnummer}/{dokumentnummer}.html',
293
+ // Regierungsvorlagen (Government Bills)
294
+ REGV: 'https://ris.bka.gv.at/Dokumente/RegV/{dokumentnummer}/{dokumentnummer}.html',
295
+ // Bezirke (District Administrative Authorities)
296
+ BVB: 'https://ris.bka.gv.at/Dokumente/Bvb/{dokumentnummer}/{dokumentnummer}.html',
297
+ // Verordnungsblätter (State Ordinance Gazettes)
298
+ VBL: 'https://ris.bka.gv.at/Dokumente/Vbl/{dokumentnummer}/{dokumentnummer}.html',
299
+ // Sonstige (Miscellaneous)
300
+ MRP: 'https://ris.bka.gv.at/Dokumente/Mrp/{dokumentnummer}/{dokumentnummer}.html',
301
+ ERL: 'https://ris.bka.gv.at/Dokumente/Erlaesse/{dokumentnummer}/{dokumentnummer}.html',
302
+ PRUEF: 'https://ris.bka.gv.at/Dokumente/PruefGewO/{dokumentnummer}/{dokumentnummer}.html',
303
+ AVSV: 'https://ris.bka.gv.at/Dokumente/Avsv/{dokumentnummer}/{dokumentnummer}.html',
304
+ SPG: 'https://ris.bka.gv.at/Dokumente/Spg/{dokumentnummer}/{dokumentnummer}.html',
305
+ KMGER: 'https://ris.bka.gv.at/Dokumente/KmGer/{dokumentnummer}/{dokumentnummer}.html',
306
+ };
307
+ /**
308
+ * Construct a direct document URL based on the Dokumentnummer prefix.
309
+ *
310
+ * @param dokumentnummer - The RIS document number (e.g., "NOR12019037")
311
+ * @returns The constructed URL or null if prefix is unknown or dokumentnummer is invalid
312
+ */
313
+ export function constructDocumentUrl(dokumentnummer) {
314
+ // Validate before URL construction (defense-in-depth)
315
+ if (!isValidDokumentnummer(dokumentnummer)) {
316
+ return null;
317
+ }
318
+ // Find matching prefix (check longer prefixes first to avoid false matches)
319
+ const prefixes = Object.keys(DOCUMENT_URL_PATTERNS).sort((a, b) => b.length - a.length);
320
+ for (const prefix of prefixes) {
321
+ if (dokumentnummer.startsWith(prefix)) {
322
+ const pattern = DOCUMENT_URL_PATTERNS[prefix];
323
+ return pattern.replace(/{dokumentnummer}/g, dokumentnummer);
324
+ }
325
+ }
326
+ return null;
327
+ }
328
+ /**
329
+ * Attempt to fetch a document directly by its Dokumentnummer using URL construction.
330
+ *
331
+ * This bypasses the search API and fetches the document directly if the
332
+ * Dokumentnummer prefix is known.
333
+ *
334
+ * @param dokumentnummer - The RIS document number (e.g., "NOR12019037")
335
+ * @param timeout - Request timeout in milliseconds
336
+ * @returns Result object with HTML content on success, or error details on failure
337
+ */
338
+ export async function getDocumentByNumber(dokumentnummer, timeout = DEFAULT_TIMEOUT) {
339
+ // Validate dokumentnummer before any URL operations
340
+ if (!isValidDokumentnummer(dokumentnummer)) {
341
+ return {
342
+ success: false,
343
+ error: `Ungueltige Dokumentnummer: "${dokumentnummer}". Nur Grossbuchstaben, Ziffern und Unterstriche erlaubt (5-50 Zeichen, muss mit Buchstabe beginnen).`,
344
+ };
345
+ }
346
+ const url = constructDocumentUrl(dokumentnummer);
347
+ if (!url) {
348
+ return {
349
+ success: false,
350
+ error: `Unbekanntes Dokumentnummer-Prefix: ${dokumentnummer.slice(0, 4)}`,
351
+ };
352
+ }
353
+ try {
354
+ const html = await getDocumentContent(url, timeout);
355
+ return { success: true, html, url };
356
+ }
357
+ catch (e) {
358
+ if (e instanceof RISAPIError) {
359
+ return {
360
+ success: false,
361
+ error: e.message,
362
+ statusCode: e.statusCode,
363
+ };
364
+ }
365
+ return {
366
+ success: false,
367
+ error: e instanceof Error ? e.message : String(e),
368
+ };
369
+ }
370
+ }
371
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Constants for the RIS MCP Server tools.
3
+ *
4
+ * Contains all static mappings, enum values, and configuration constants
5
+ * used by the individual tool handlers.
6
+ */
7
+ /**
8
+ * Mapping of Bundesland names to their API parameter suffixes.
9
+ * The RIS API expects boolean flags in the format `Bundesland.SucheIn[StateName]=true`.
10
+ */
11
+ export declare const BUNDESLAND_MAPPING: Record<string, string>;
12
+ /**
13
+ * Index categories for Gemeinden (Gr) application.
14
+ * Used to filter municipal law by subject area.
15
+ * Values from API documentation: OGD_Gemeinderecht_Request.xsd
16
+ */
17
+ export declare const GEMEINDEN_INDEX_VALUES: readonly ["Undefined", "VertretungskoerperUndAllgemeineVerwaltung", "OeffentlicheOrdnungUndSicherheit", "UnterrichtErziehungSportUndWissenschaft", "KunstKulturUndKultus", "SozialeWohlfahrtUndWohnbaufoerderung", "Gesundheit", "StraßenUndWasserbauVerkehr", "Wirtschaftsfoerderung", "Dienstleistungen", "Finanzwirtschaft"];
18
+ /**
19
+ * ImRisSeit values for time-based filtering.
20
+ */
21
+ export declare const IM_RIS_SEIT_VALUES: readonly ["EinerWoche", "ZweiWochen", "EinemMonat", "DreiMonaten", "SechsMonaten", "EinemJahr"];
22
+ /**
23
+ * Political parties for UPTS (Parteien-Transparenz-Senat) application.
24
+ */
25
+ export declare const UPTS_PARTEIEN: readonly ["SPÖ - Sozialdemokratische Partei Österreichs", "ÖVP - Österreichische Volkspartei", "FPÖ - Freiheitliche Partei Österreichs", "GRÜNE - Die Grünen - Die Grüne Alternative", "NEOS - NEOS – Das Neue Österreich und Liberales Forum", "BZÖ - Bündnis Zukunft Österreich"];
26
+ /**
27
+ * Federal ministries for Erlaesse (decrees) application.
28
+ * Values from API documentation - full names without abbreviations.
29
+ */
30
+ export declare const BUNDESMINISTERIEN: readonly ["Bundeskanzleramt", "Bundesministerium für Kunst, Kultur, öffentlichen Dienst und Sport", "Bundesministerium für europäische und internationale Angelegenheiten", "Bundesministerium für Arbeit und Wirtschaft", "Bundesministerium für Bildung, Wissenschaft und Forschung", "Bundesministerium für Finanzen", "Bundesministerium für Inneres", "Bundesministerium für Justiz", "Bundesministerium für Klimaschutz, Umwelt, Energie, Mobilität, Innovation und Technologie", "Bundesministerium für Landesverteidigung", "Bundesministerium für Land- und Forstwirtschaft, Regionen und Wasserwirtschaft", "Bundesministerium für Soziales, Gesundheit, Pflege und Konsumentenschutz"];
31
+ /**
32
+ * Document types for KmGer (court announcements) application.
33
+ * Values from API documentation page 53-54: Geschaeftsordnung, Geschaeftsverteilung
34
+ */
35
+ export declare const KMGER_TYP_VALUES: readonly ["Geschaeftsordnung", "Geschaeftsverteilung"];
36
+ /**
37
+ * Authors (Urheber) for Avsv application.
38
+ * Values from API documentation - full names WITH abbreviations in parentheses.
39
+ */
40
+ export declare const AVSV_URHEBER_VALUES: readonly ["Dachverband der Sozialversicherungsträger (DVSV)", "Pensionsversicherungsanstalt (PVA)", "Österreichische Gesundheitskasse (ÖGK)", "Allgemeine Unfallversicherungsanstalt (AUVA)", "Sozialversicherungsanstalt der Selbständigen (SVS)", "Versicherungsanstalt öffentlich Bediensteter, Eisenbahnen und Bergbau (BVAEB)"];
41
+ /**
42
+ * Type values for Avn (veterinary notices) application.
43
+ */
44
+ export declare const AVN_TYP_VALUES: readonly ["Kundmachung", "Verordnung", "Erlass"];
45
+ /**
46
+ * OSG (Österreichischer Strukturplan Gesundheit) types for Spg application.
47
+ */
48
+ export declare const SPG_OSG_TYP_VALUES: readonly ["ÖSG", "ÖSG - Großgeräteplan"];
49
+ /**
50
+ * RSG (Regionaler Strukturplan Gesundheit) types for Spg application.
51
+ */
52
+ export declare const SPG_RSG_TYP_VALUES: readonly ["RSG", "RSG - Großgeräteplan"];
53
+ /**
54
+ * PruefGewO examination types.
55
+ */
56
+ export declare const PRUEFGEWO_TYP_VALUES: readonly ["Befähigungsprüfung", "Eignungsprüfung", "Meisterprüfung"];
57
+ /**
58
+ * Valid application names for the History API endpoint.
59
+ * The History API uses "Anwendung" parameter with specific application names.
60
+ */
61
+ export declare const VALID_HISTORY_APPLICATIONS: readonly ["Bundesnormen", "Landesnormen", "Justiz", "Vfgh", "Vwgh", "Bvwg", "Lvwg", "BgblAuth", "BgblAlt", "BgblPdf", "LgblAuth", "Lgbl", "LgblNO", "Gemeinderecht", "GemeinderechtAuth", "Bvb", "Vbl", "RegV", "Mrp", "Erlaesse", "PruefGewO", "Avsv", "Spg", "KmGer", "Dsk", "Gbk", "Dok", "Pvak", "Normenliste", "AsylGH"];
62
+ /**
63
+ * Valid Bundesland values for Vbl (Verordnungsblätter) API.
64
+ * Note: Vbl uses direct Bundesland values, NOT the SucheIn format used by Lgbl.
65
+ */
66
+ export declare const VALID_VBL_BUNDESLAENDER: readonly ["Burgenland", "Kaernten", "Niederoesterreich", "Oberoesterreich", "Salzburg", "Steiermark", "Tirol", "Vorarlberg", "Wien"];
67
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,iUAYzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB,iGAOrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,qRAOhB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,iBAAiB,mqBAapB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,gBAAgB,wDAAyD,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,sUAOtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,kDAAmD,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,kBAAkB,0CAA2C,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,kBAAkB,0CAA2C,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,oBAAoB,sEAIvB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,0BAA0B,+TA+B7B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,uBAAuB,sIAU1B,CAAC"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Constants for the RIS MCP Server tools.
3
+ *
4
+ * Contains all static mappings, enum values, and configuration constants
5
+ * used by the individual tool handlers.
6
+ */
7
+ /**
8
+ * Mapping of Bundesland names to their API parameter suffixes.
9
+ * The RIS API expects boolean flags in the format `Bundesland.SucheIn[StateName]=true`.
10
+ */
11
+ export const BUNDESLAND_MAPPING = {
12
+ Wien: 'SucheInWien',
13
+ Niederoesterreich: 'SucheInNiederoesterreich',
14
+ Oberoesterreich: 'SucheInOberoesterreich',
15
+ Salzburg: 'SucheInSalzburg',
16
+ Tirol: 'SucheInTirol',
17
+ Vorarlberg: 'SucheInVorarlberg',
18
+ Kaernten: 'SucheInKaernten',
19
+ Steiermark: 'SucheInSteiermark',
20
+ Burgenland: 'SucheInBurgenland',
21
+ };
22
+ /**
23
+ * Index categories for Gemeinden (Gr) application.
24
+ * Used to filter municipal law by subject area.
25
+ * Values from API documentation: OGD_Gemeinderecht_Request.xsd
26
+ */
27
+ export const GEMEINDEN_INDEX_VALUES = [
28
+ 'Undefined',
29
+ 'VertretungskoerperUndAllgemeineVerwaltung',
30
+ 'OeffentlicheOrdnungUndSicherheit',
31
+ 'UnterrichtErziehungSportUndWissenschaft',
32
+ 'KunstKulturUndKultus',
33
+ 'SozialeWohlfahrtUndWohnbaufoerderung',
34
+ 'Gesundheit',
35
+ 'StraßenUndWasserbauVerkehr',
36
+ 'Wirtschaftsfoerderung',
37
+ 'Dienstleistungen',
38
+ 'Finanzwirtschaft',
39
+ ];
40
+ /**
41
+ * ImRisSeit values for time-based filtering.
42
+ */
43
+ export const IM_RIS_SEIT_VALUES = [
44
+ 'EinerWoche',
45
+ 'ZweiWochen',
46
+ 'EinemMonat',
47
+ 'DreiMonaten',
48
+ 'SechsMonaten',
49
+ 'EinemJahr',
50
+ ];
51
+ /**
52
+ * Political parties for UPTS (Parteien-Transparenz-Senat) application.
53
+ */
54
+ export const UPTS_PARTEIEN = [
55
+ 'SPÖ - Sozialdemokratische Partei Österreichs',
56
+ 'ÖVP - Österreichische Volkspartei',
57
+ 'FPÖ - Freiheitliche Partei Österreichs',
58
+ 'GRÜNE - Die Grünen - Die Grüne Alternative',
59
+ 'NEOS - NEOS – Das Neue Österreich und Liberales Forum',
60
+ 'BZÖ - Bündnis Zukunft Österreich',
61
+ ];
62
+ /**
63
+ * Federal ministries for Erlaesse (decrees) application.
64
+ * Values from API documentation - full names without abbreviations.
65
+ */
66
+ export const BUNDESMINISTERIEN = [
67
+ 'Bundeskanzleramt',
68
+ 'Bundesministerium für Kunst, Kultur, öffentlichen Dienst und Sport',
69
+ 'Bundesministerium für europäische und internationale Angelegenheiten',
70
+ 'Bundesministerium für Arbeit und Wirtschaft',
71
+ 'Bundesministerium für Bildung, Wissenschaft und Forschung',
72
+ 'Bundesministerium für Finanzen',
73
+ 'Bundesministerium für Inneres',
74
+ 'Bundesministerium für Justiz',
75
+ 'Bundesministerium für Klimaschutz, Umwelt, Energie, Mobilität, Innovation und Technologie',
76
+ 'Bundesministerium für Landesverteidigung',
77
+ 'Bundesministerium für Land- und Forstwirtschaft, Regionen und Wasserwirtschaft',
78
+ 'Bundesministerium für Soziales, Gesundheit, Pflege und Konsumentenschutz',
79
+ ];
80
+ /**
81
+ * Document types for KmGer (court announcements) application.
82
+ * Values from API documentation page 53-54: Geschaeftsordnung, Geschaeftsverteilung
83
+ */
84
+ export const KMGER_TYP_VALUES = ['Geschaeftsordnung', 'Geschaeftsverteilung'];
85
+ /**
86
+ * Authors (Urheber) for Avsv application.
87
+ * Values from API documentation - full names WITH abbreviations in parentheses.
88
+ */
89
+ export const AVSV_URHEBER_VALUES = [
90
+ 'Dachverband der Sozialversicherungsträger (DVSV)',
91
+ 'Pensionsversicherungsanstalt (PVA)',
92
+ 'Österreichische Gesundheitskasse (ÖGK)',
93
+ 'Allgemeine Unfallversicherungsanstalt (AUVA)',
94
+ 'Sozialversicherungsanstalt der Selbständigen (SVS)',
95
+ 'Versicherungsanstalt öffentlich Bediensteter, Eisenbahnen und Bergbau (BVAEB)',
96
+ ];
97
+ /**
98
+ * Type values for Avn (veterinary notices) application.
99
+ */
100
+ export const AVN_TYP_VALUES = ['Kundmachung', 'Verordnung', 'Erlass'];
101
+ /**
102
+ * OSG (Österreichischer Strukturplan Gesundheit) types for Spg application.
103
+ */
104
+ export const SPG_OSG_TYP_VALUES = ['ÖSG', 'ÖSG - Großgeräteplan'];
105
+ /**
106
+ * RSG (Regionaler Strukturplan Gesundheit) types for Spg application.
107
+ */
108
+ export const SPG_RSG_TYP_VALUES = ['RSG', 'RSG - Großgeräteplan'];
109
+ /**
110
+ * PruefGewO examination types.
111
+ */
112
+ export const PRUEFGEWO_TYP_VALUES = [
113
+ 'Befähigungsprüfung',
114
+ 'Eignungsprüfung',
115
+ 'Meisterprüfung',
116
+ ];
117
+ /**
118
+ * Valid application names for the History API endpoint.
119
+ * The History API uses "Anwendung" parameter with specific application names.
120
+ */
121
+ export const VALID_HISTORY_APPLICATIONS = [
122
+ 'Bundesnormen',
123
+ 'Landesnormen',
124
+ 'Justiz',
125
+ 'Vfgh',
126
+ 'Vwgh',
127
+ 'Bvwg',
128
+ 'Lvwg',
129
+ 'BgblAuth',
130
+ 'BgblAlt',
131
+ 'BgblPdf',
132
+ 'LgblAuth',
133
+ 'Lgbl',
134
+ 'LgblNO',
135
+ 'Gemeinderecht',
136
+ 'GemeinderechtAuth',
137
+ 'Bvb',
138
+ 'Vbl',
139
+ 'RegV',
140
+ 'Mrp',
141
+ 'Erlaesse',
142
+ 'PruefGewO',
143
+ 'Avsv',
144
+ 'Spg',
145
+ 'KmGer',
146
+ 'Dsk',
147
+ 'Gbk',
148
+ 'Dok',
149
+ 'Pvak',
150
+ 'Normenliste',
151
+ 'AsylGH',
152
+ ];
153
+ /**
154
+ * Valid Bundesland values for Vbl (Verordnungsblätter) API.
155
+ * Note: Vbl uses direct Bundesland values, NOT the SucheIn format used by Lgbl.
156
+ */
157
+ export const VALID_VBL_BUNDESLAENDER = [
158
+ 'Burgenland',
159
+ 'Kaernten',
160
+ 'Niederoesterreich',
161
+ 'Oberoesterreich',
162
+ 'Salzburg',
163
+ 'Steiermark',
164
+ 'Tirol',
165
+ 'Vorarlberg',
166
+ 'Wien',
167
+ ];
168
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,IAAI,EAAE,aAAa;IACnB,iBAAiB,EAAE,0BAA0B;IAC7C,eAAe,EAAE,wBAAwB;IACzC,QAAQ,EAAE,iBAAiB;IAC3B,KAAK,EAAE,cAAc;IACrB,UAAU,EAAE,mBAAmB;IAC/B,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,mBAAmB;IAC/B,UAAU,EAAE,mBAAmB;CAChC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW;IACX,2CAA2C;IAC3C,kCAAkC;IAClC,yCAAyC;IACzC,sBAAsB;IACtB,sCAAsC;IACtC,YAAY;IACZ,4BAA4B;IAC5B,uBAAuB;IACvB,kBAAkB;IAClB,kBAAkB;CACV,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,cAAc;IACd,WAAW;CACH,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,8CAA8C;IAC9C,mCAAmC;IACnC,wCAAwC;IACxC,4CAA4C;IAC5C,uDAAuD;IACvD,kCAAkC;CAC1B,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB;IAClB,oEAAoE;IACpE,sEAAsE;IACtE,6CAA6C;IAC7C,2DAA2D;IAC3D,gCAAgC;IAChC,+BAA+B;IAC/B,8BAA8B;IAC9B,2FAA2F;IAC3F,0CAA0C;IAC1C,gFAAgF;IAChF,0EAA0E;CAClE,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,CAAU,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,kDAAkD;IAClD,oCAAoC;IACpC,wCAAwC;IACxC,8CAA8C;IAC9C,oDAAoD;IACpD,+EAA+E;CACvE,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAU,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAU,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,oBAAoB;IACpB,iBAAiB;IACjB,gBAAgB;CACR,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,cAAc;IACd,cAAc;IACd,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACN,QAAQ;IACR,eAAe;IACf,mBAAmB;IACnB,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,UAAU;IACV,WAAW;IACX,MAAM;IACN,KAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,aAAa;IACb,QAAQ;CACA,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,YAAY;IACZ,UAAU;IACV,mBAAmB;IACnB,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,OAAO;IACP,YAAY;IACZ,MAAM;CACE,CAAC"}