@cyanheads/ris-austria-mcp-server 0.4.0 → 0.4.2

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 (36) hide show
  1. package/AGENTS.md +86 -88
  2. package/CLAUDE.md +86 -88
  3. package/Dockerfile +11 -6
  4. package/README.md +55 -7
  5. package/changelog/0.4.x/0.4.1.md +15 -0
  6. package/changelog/0.4.x/0.4.2.md +26 -0
  7. package/changelog/template.md +55 -16
  8. package/dist/index.js +6 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/mcp-server/resources/definitions/ris-document.resource.d.ts +4 -3
  11. package/dist/mcp-server/resources/definitions/ris-document.resource.d.ts.map +1 -1
  12. package/dist/mcp-server/resources/definitions/ris-document.resource.js +12 -6
  13. package/dist/mcp-server/resources/definitions/ris-document.resource.js.map +1 -1
  14. package/dist/mcp-server/tools/definitions/_shared.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/_shared.js +0 -2
  16. package/dist/mcp-server/tools/definitions/_shared.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/ris-get-document.tool.d.ts +95 -34
  18. package/dist/mcp-server/tools/definitions/ris-get-document.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/ris-get-document.tool.js +198 -46
  20. package/dist/mcp-server/tools/definitions/ris-get-document.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.d.ts +3 -3
  22. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.js +5 -6
  24. package/dist/mcp-server/tools/definitions/ris-lookup-citation.tool.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/ris-track-changes.tool.js +2 -2
  26. package/dist/mcp-server/tools/definitions/ris-track-changes.tool.js.map +1 -1
  27. package/dist/services/ris/normalizer.d.ts +1 -1
  28. package/dist/services/ris/normalizer.d.ts.map +1 -1
  29. package/dist/services/ris/normalizer.js +3 -3
  30. package/dist/services/ris/normalizer.js.map +1 -1
  31. package/dist/services/ris/ris-service.d.ts +1 -1
  32. package/dist/services/ris/ris-service.d.ts.map +1 -1
  33. package/dist/services/ris/ris-service.js +4 -10
  34. package/dist/services/ris/ris-service.js.map +1 -1
  35. package/package.json +7 -7
  36. package/server.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ris-get-document.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-get-document.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ris-get-document.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-get-document.tool.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@
10
10
  * metadata-only) — a text-format request against a non-text application degrades to a
11
11
  * `format_unavailable` notice on a success result, never an error. Markdown conversion drops
12
12
  * the `.sr-only` screen-reader twin RIS ships beside every abbreviated citation, keeping the
13
- * visible form; `html` and `xml` pass through untouched. Oversized markdown carrying
14
- * §/Artikel/Anlage structure overflows to a retrievable section outline (never a silent
15
- * truncation, and never for a rendition with no such headings); a follow-up call
16
- * with `sections:[…]` returns just the chosen sections, and a selector matching nothing gets
17
- * the outline back with a notice rather than the whole document. The shared
13
+ * visible form; `html` and `xml` pass through untouched. Oversized markdown overflows to a
14
+ * retrievable outline rather than a silent truncation — its §/Artikel/Anlage sections, or
15
+ * `Part n of N` byte windows where it carries no such headings; a follow-up call with
16
+ * `sections:[…]` returns just the chosen entries, and a selector matching nothing gets the
17
+ * outline back with a notice rather than the whole document. The shared
18
18
  * {@link renderDocument} helper backs both this tool and the `ris://document/…` resource.
19
19
  * @module mcp-server/tools/definitions/ris-get-document
20
20
  */
@@ -36,18 +36,20 @@ const BINDING_STATUSES = [
36
36
  'translation',
37
37
  ];
38
38
  /**
39
- * Serialized-length budget for inlining document text. Above it, markdown overflows to a
40
- * §/Artikel/Anlage section outline instead of returning whole — but only when the rendition
41
- * segments into at least two of those sections. A rendition carrying none of them has nothing
42
- * to outline and returns whole however large: court decisions, gazette and announcement
43
- * bodies, and consolidated `§ 0` promulgation records all do, measured live to 399,972 bytes
44
- * on a Bvwg decision.
39
+ * Serialized-length budget for inlining document text, and the size of one addressable
40
+ * window. Above it, markdown overflows to an outline instead of returning whole — its
41
+ * §/Artikel/Anlage sections where it carries at least two such headings, else the byte
42
+ * windows {@link windowDocument} cuts, so a rendition the segmenter cannot split is
43
+ * retrievable rather than returned whole at any size (court decisions, gazette and
44
+ * announcement bodies, and consolidated `§ 0` promulgation records all carry no headings,
45
+ * measured live to 399,972 bytes on a Bvwg decision).
45
46
  *
46
47
  * Sized against what one tool result can carry into a working context (≈10K tokens of legal
47
48
  * prose), not against what counts as a pathological document: across live samples the
48
49
  * documents callers routinely read land well under it — consolidated-law sections at 2–3 KB,
49
50
  * drafts and bills at 6–36 KB — while the multi-act bills and long translations that motivated
50
- * the outline (71 KB–199 KB) route through it.
51
+ * the outline (71 KB–199 KB) route through it. One number serves both roles because a window
52
+ * is by definition one result's worth, which is what the budget already means.
51
53
  *
52
54
  * Handed to `outlineOnOverflow`, which measures `JSON.stringify` length (≈ UTF-8 bytes for
53
55
  * the mostly-Latin legal text); the exact `byte_size` is reported separately.
@@ -300,6 +302,7 @@ export function segmentDocument(text) {
300
302
  const seen = (counts.get(name) ?? 0) + 1;
301
303
  counts.set(name, seen);
302
304
  sections.push({
305
+ kind: 'section',
303
306
  name: seen > 1 ? `${name} (${seen})` : name,
304
307
  text: slice,
305
308
  bytes: encoder.encode(slice).length,
@@ -321,24 +324,142 @@ export function segmentDocument(text) {
321
324
  });
322
325
  return sections;
323
326
  }
327
+ /**
328
+ * Shape of a window name. `Part n of N` is the one entry name {@link segmentDocument} can
329
+ * never produce — a section name always opens with a §/Artikel/Anlage marker — so it also
330
+ * identifies a roster's kind on a surface that carries only names and byte sizes.
331
+ */
332
+ const WINDOW_NAME = /^Part \d+ of \d+$/u;
333
+ /**
334
+ * Cut rendered document text into near-even windows snapped to line boundaries, named
335
+ * `Part 1 of N` … `Part N of N` in document order. The retrieval path for a rendition
336
+ * {@link segmentDocument} cannot split; returns `[]` under the budget and for text that
337
+ * carries no line break to cut on, which the caller reads as "nothing to outline".
338
+ *
339
+ * Even windows rather than fill-the-budget windows: filling leaves a runt tail (a 40,440-byte
340
+ * decision splits 39,602 + 838, buying a round-trip for a scrap) while an even split of the
341
+ * same document is 20,196 + 20,244. Each window's target is the bytes still unassigned over
342
+ * the windows still to cut, so the remainder that snapping to the next line break carries
343
+ * forward is spread across the rest instead of piling onto the tail.
344
+ *
345
+ * Two rules keep the budget a ceiling rather than an aspiration. A window never takes a line
346
+ * that would carry it past the budget, so snapping to the next line break cannot overshoot;
347
+ * and when the tail still lands over — the target sitting just under the budget leaves the
348
+ * last window everything the earlier ones declined — the window count rises until every
349
+ * window fits. A line longer than the budget is the exception, and the reason the count stops
350
+ * rising rather than climbing to one window per line: splitting inside a line would put the
351
+ * cut where the caller cannot see it, so such a line sits alone in a window that goes over.
352
+ *
353
+ * Window bytes sum to the document's byte size exactly — the windows concatenate back to the
354
+ * input, so nothing is dropped or double-counted.
355
+ */
356
+ export function windowDocument(text, budget) {
357
+ const encoder = new TextEncoder();
358
+ const total = encoder.encode(text).length;
359
+ if (total <= budget)
360
+ return [];
361
+ const lines = text.split('\n');
362
+ if (lines.length < 2)
363
+ return []; // no line break to cut on
364
+ const lineBytes = lines.map((line, i) => encoder.encode(line).length + (i === lines.length - 1 ? 0 : 1));
365
+ /** Line-index boundaries of `count` runs, each targeting an even share of what is left. */
366
+ const cut = (count) => {
367
+ const bounds = [0];
368
+ let cursor = 0;
369
+ let consumed = 0;
370
+ for (let remaining = count; remaining > 1; remaining -= 1) {
371
+ const target = (total - consumed) / remaining;
372
+ const limit = lines.length - (remaining - 1); // leave one line per remaining window
373
+ let bytes = 0;
374
+ while (cursor < limit && bytes < target) {
375
+ const next = lineBytes[cursor] ?? 0;
376
+ if (bytes > 0 && bytes + next > budget)
377
+ break;
378
+ bytes += next;
379
+ cursor += 1;
380
+ }
381
+ bounds.push(cursor);
382
+ consumed += bytes;
383
+ }
384
+ bounds.push(lines.length);
385
+ return bounds;
386
+ };
387
+ /** Every run fits the budget, or is the lone over-budget line nothing can split. */
388
+ const fits = (bounds) => bounds.slice(0, -1).every((from, i) => {
389
+ const to = bounds[i + 1] ?? lines.length;
390
+ return to - from <= 1 || lineBytes.slice(from, to).reduce((sum, n) => sum + n, 0) <= budget;
391
+ });
392
+ // A document with fewer lines than the budget asks windows for cannot have more windows
393
+ // than it has lines — every line over the budget is one nothing can split.
394
+ const floor = Math.min(Math.ceil(total / budget), lines.length);
395
+ let bounds = cut(floor);
396
+ for (let count = floor + 1; count <= lines.length && !fits(bounds); count += 1) {
397
+ bounds = cut(count);
398
+ }
399
+ const slices = bounds
400
+ .slice(0, -1)
401
+ .map((from, i) => {
402
+ const to = bounds[i + 1] ?? lines.length;
403
+ return lines.slice(from, to).join('\n') + (to < lines.length ? '\n' : '');
404
+ })
405
+ .filter((slice) => slice !== '');
406
+ if (slices.length < 2)
407
+ return [];
408
+ return slices.map((slice, i) => ({
409
+ kind: 'window',
410
+ name: `Part ${i + 1} of ${slices.length}`,
411
+ text: slice,
412
+ bytes: encoder.encode(slice).length,
413
+ }));
414
+ }
415
+ /**
416
+ * The one roster of what a caller can address in a rendition — §/Artikel/Anlage sections
417
+ * where the markdown carries at least two of them, else the byte windows an over-budget
418
+ * document is cut into. Both the outline and the `sections:[…]` selector resolve through
419
+ * here, so every entry the outline advertises is retrievable by name.
420
+ *
421
+ * Markdown only. `html` and `xml` are byte-identical passthroughs of the published artifact
422
+ * and a mid-document slice of either is not well-formed, so they stay whole at any size and
423
+ * a caller who needs one has `content_urls`.
424
+ *
425
+ * The two-entry floor matches `outlineOnOverflow`'s own short-circuit: an outline whose only
426
+ * possible `sections` argument returns the same bytes costs a round-trip and buys nothing.
427
+ */
428
+ export function addressableSections(text, format) {
429
+ const sections = segmentDocument(text);
430
+ if (sections.length >= 2)
431
+ return sections;
432
+ return format === 'markdown' ? windowDocument(text, OUTLINE_BUDGET_BYTES) : [];
433
+ }
324
434
  /**
325
435
  * Resolve a `sections:[…]` selector against rendered document text — the selective-retrieval
326
- * counterpart to the outline. The handler re-fetches the document (the upstream query is
327
- * deterministic, so it reproduces the same text) and slices it to the requested sections.
436
+ * counterpart to the outline, resolving through the same {@link addressableSections} roster
437
+ * so every advertised name retrieves. The handler re-fetches the document (the upstream query
438
+ * is deterministic, so it reproduces the same text) and slices it to the requested entries.
328
439
  * Reports the unmatched names and the full roster alongside the matched text so the handler
329
440
  * can disclose a mismatch instead of silently returning something the caller didn't ask for.
330
441
  */
331
- export function selectDocumentSections(text, want) {
332
- const sections = segmentDocument(text);
442
+ export function selectDocumentSections(text, want, format) {
443
+ const sections = addressableSections(text, format);
444
+ const windowed = sections[0]?.kind === 'window';
333
445
  const names = new Set(sections.map((section) => section.name));
334
446
  const wanted = new Set(want);
335
447
  const matched = sections.filter((section) => wanted.has(section.name));
448
+ const available = sections.map(({ name, bytes }) => ({ name, bytes }));
449
+ // Same split as the outline's: a section roster is a menu, so largest first puts the
450
+ // substantial units on top; a window roster is a reading sequence and keeps document order.
451
+ if (!windowed)
452
+ available.sort((a, b) => b.bytes - a.bytes);
336
453
  return {
337
- available: sections
338
- .map(({ name, bytes }) => ({ name, bytes }))
339
- .sort((a, b) => b.bytes - a.bytes),
340
- text: matched.map((section) => section.text).join('\n\n'),
454
+ available,
455
+ // No separator: every entry is a contiguous slice that already carries the line break
456
+ // ending it, so a multi-entry selection reassembles the source byte for byte and its
457
+ // size is the sum of the byte sizes the outline advertised. Inserting one would put
458
+ // bytes on the wire that are not in the document — enough, in a table-heavy RIS body,
459
+ // to split a table at the seam and orphan its rows from their header row.
460
+ text: matched.map((section) => section.text).join(''),
341
461
  unmatched: [...new Set(want)].filter((name) => !names.has(name)),
462
+ windowed,
342
463
  };
343
464
  }
344
465
  /** Quote a caller-supplied section-name list for a notice. */
@@ -347,16 +468,29 @@ function quoteNames(names) {
347
468
  }
348
469
  /**
349
470
  * Apply the outline-on-overflow contract to rendered document text: whole under the byte
350
- * budget (or with fewer than two structural sections), else a section outline. Shares
351
- * {@link segmentDocument} as the section extractor so the tool and the resource segment
352
- * identically; the `notice` builder is caller-specific (each points at its own re-call).
471
+ * budget (or with fewer than two addressable entries), else an outline of `roster`. The
472
+ * caller passes the roster it already resolved through {@link addressableSections}, so the
473
+ * outline it advertises and the wording of its notice describe the same entries; the `notice`
474
+ * builder is caller-specific (each points at its own re-call).
475
+ *
476
+ * `outlineOnOverflow` sorts entries largest first and offers no opt-out. That reads as a menu
477
+ * for a section roster, where the names say what each entry is. A window roster is a reading
478
+ * sequence, and a caller that walks `sections` in array order — the obvious way to read one
479
+ * — would take the document out of order, so document order is restored for it here.
353
480
  */
354
- export function outlineDocument(text, notice) {
355
- return outlineOnOverflow({ text }, {
481
+ export function outlineDocument(text, roster, notice) {
482
+ const decision = outlineOnOverflow({ text }, {
356
483
  budget: OUTLINE_BUDGET_BYTES,
357
- extract: (doc) => segmentDocument(doc.text).map(({ name, bytes }) => ({ name, bytes })),
484
+ extract: () => roster.map(({ name, bytes }) => ({ name, bytes })),
358
485
  notice,
359
486
  });
487
+ if (decision.kind === 'full' || roster[0]?.kind !== 'window')
488
+ return decision;
489
+ const order = new Map(roster.map((entry, i) => [entry.name, i]));
490
+ return {
491
+ ...decision,
492
+ sections: [...decision.sections].sort((a, b) => (order.get(a.name) ?? 0) - (order.get(b.name) ?? 0)),
493
+ };
360
494
  }
361
495
  /** Name the three largest sections, quoted, as examples for a re-call notice. */
362
496
  export function exampleSectionNames(sections) {
@@ -366,15 +500,20 @@ export function exampleSectionNames(sections) {
366
500
  .join(', ');
367
501
  }
368
502
  /**
369
- * Render an outline — the section roster the agent picks from — to markdown. Shared by the
370
- * tool's `format()` (as a content block) and the resource (as its body), so both client
371
- * surfaces list identical sections. Deliberately says nothing about *why* the outline was
372
- * returned: the tool emits one both on a byte overflow and on an unmatched `sections`
373
- * selector, and the accompanying notice is what separates the two.
503
+ * Render an outline — the roster the agent picks from — to markdown. Shared by the tool's
504
+ * `format()` (as a content block) and the resource (as its body), so both client surfaces
505
+ * list identical entries. A roster is all sections or all windows ({@link addressableSections}
506
+ * never mixes them), and the heading names which, since this surface carries only names and
507
+ * byte sizes: windows are a reading sequence listed in document order, sections a menu listed
508
+ * largest first. Deliberately says nothing about *why* the outline was returned: the tool
509
+ * emits one both on a byte overflow and on an unmatched `sections` selector, and the
510
+ * accompanying notice is what separates the two.
374
511
  */
375
512
  export function renderOutlineSections(sections) {
376
513
  return [
377
- `**${sections.length} sections** (retrieve by name):`,
514
+ WINDOW_NAME.test(sections[0]?.name ?? '')
515
+ ? `**${sections.length} windows** (retrieve by name, in this order):`
516
+ : `**${sections.length} sections** (retrieve by name):`,
378
517
  ...sections.map((section) => `- \`${section.name}\` — ${section.bytes} bytes`),
379
518
  ].join('\n');
380
519
  }
@@ -436,7 +575,7 @@ const ContentUrlsSchema = z
436
575
  .describe('Constructed rendition URLs. Empty for authentic-PDF-only (Bvb/GrA/KmGer) and metadata-only (BgblAlt) applications — see authentic_pdf_url and the notice. For a companion document (a draft’s Erläuterungen, Textgegenüberstellung, WFA, cover letter, or annex) these are the companion’s own XML/HTML/PDF, not the parent document’s — constructed rather than read back from RIS, so for the roughly one companion in eight that RIS files as a PDF only, xml and html return 404 and pdf is the one that resolves.');
437
576
  export const risGetDocument = tool('ris_get_document', {
438
577
  title: 'Get RIS Document',
439
- description: 'Fetch one RIS document’s full text or its rendition URLs, with explicit binding status and the amtssigniert authentic PDF surfaced wherever it exists. Address the document exactly one of two ways: document_number plus application (both copied verbatim from a ris_search_* or ris_lookup_citation result), or a document_url from a result’s content_urls — or, for a draft’s companion documents (Erläuterungen, Textgegenüberstellung, WFA, cover letter, annexes), a ris_search_drafts record’s materials[].url, which is the only route to them. format: markdown (default — the HTML rendition converted to markdown), html (raw HTML rendition), xml (the RIS Nutzdaten XML), or urls_only (no fetch — every rendition URL, including the Authentisch PDF). Format availability varies by application and the tool degrades explicitly, never silently: consolidated law, gazettes, case law, drafts, and most sectoral collections carry full text; district and municipal promulgations and court rules (Bvb, GrA, KmGer) publish only the signed authentic PDF; party-transparency decisions and council minutes (Upts, Mrp) are PDF-only; the 1848–1940 imperial gazettes (BgblAlt) are metadata-only — for these a text-format request returns a format_unavailable notice with the usable URL, not an error. Every result carries binding_status; only authentic (amtssigniert) publications are legally binding. This tool returns content, not fresh metadata — the metadata rides the search/lookup step that produced the document number. When the markdown text overflows the 40,000-byte budget and carries at least two §/Artikel/Anlage headings the tool returns a section outline (kind: outline) instead of truncating; re-call with sections:[…] naming outline entries to retrieve just those, and a name matching no section returns the outline again with a notice rather than the whole document. Outlining needs those headings: a rendition without them — most court decisions, many gazette and announcement bodies, and every raw html/xml rendition — has nothing to outline and returns whole at any size. Markdown drops the screen-reader expansions RIS ships alongside each abbreviated citation, keeping the visible citation form; raw html/xml renditions are returned exactly as published.',
578
+ description: 'Fetch one RIS document’s full text or its rendition URLs, with explicit binding status and the amtssigniert authentic PDF surfaced wherever it exists. Address the document exactly one of two ways: document_number plus application (both copied verbatim from a ris_search_* or ris_lookup_citation result), or a document_url from a result’s content_urls — or, for a draft’s companion documents (Erläuterungen, Textgegenüberstellung, WFA, cover letter, annexes), a ris_search_drafts record’s materials[].url, which is the only route to them. format: markdown (default — the HTML rendition converted to markdown), html (raw HTML rendition), xml (the RIS Nutzdaten XML), or urls_only (no fetch — every rendition URL, including the Authentisch PDF). Format availability varies by application and the tool degrades explicitly, never silently: consolidated law, gazettes, case law, drafts, and most sectoral collections carry full text; district and municipal promulgations and court rules (Bvb, GrA, KmGer) publish only the signed authentic PDF; party-transparency decisions and council minutes (Upts, Mrp) are PDF-only; the 1848–1940 imperial gazettes (BgblAlt) are metadata-only — for these a text-format request returns a format_unavailable notice with the usable URL, not an error. Every result carries binding_status; only authentic (amtssigniert) publications are legally binding. This tool returns content, not fresh metadata — the metadata rides the search/lookup step that produced the document number. When the markdown text overflows the 40,000-byte budget the tool returns an outline (kind: outline) instead of truncating: the document’s §/Artikel/Anlage sections where it carries at least two such headings, otherwise contiguous byte windows named Part 1 of N … Part N of N covering the whole text and listed in document order. Re-call with sections:[…] naming outline entries to retrieve just those; a name matching no entry returns the outline again with a notice rather than the whole document. Windows are cut at line breaks, not at sentence or § boundaries, so one can open mid-sentence — read them in order and pull the neighbour when a passage straddles a cut. Raw html and xml renditions are never sliced and return whole at any size. Markdown drops the screen-reader expansions RIS ships alongside each abbreviated citation, keeping the visible citation form; raw html/xml renditions are returned exactly as published.',
440
579
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
441
580
  input: z.object({
442
581
  document_number: z
@@ -458,7 +597,7 @@ export const risGetDocument = tool('ris_get_document', {
458
597
  sections: z
459
598
  .array(z.string())
460
599
  .optional()
461
- .describe('Section names to retrieve, each copied verbatim from a prior outline response (kind: outline). Omit for the full document — which returns a §/Artikel/Anlage outline instead when the markdown overflows the 40,000-byte budget and carries at least two such headings. A name that matches no section is never silently ignored: a total miss returns the outline (kind: outline) with a notice, a partial miss returns the matched sections with a notice naming other sections to pick from. Applies to markdown only — html, xml, and urls_only carry no headings to select from and return in full.'),
600
+ .describe('Entry names to retrieve, each copied verbatim from a prior outline response (kind: outline) — §/Artikel/Anlage section names, or window names of the form "Part 2 of 6". Omit for the full document, which returns an outline instead when the markdown overflows the 40,000-byte budget. A name that matches no entry is never silently ignored: a total miss returns the outline (kind: outline) with a notice, a partial miss returns the matched entries with a notice naming others to pick from. Applies to markdown only — html, xml, and urls_only are never sliced and return in full.'),
462
601
  }),
463
602
  output: z.object({
464
603
  text: z
@@ -475,14 +614,14 @@ export const risGetDocument = tool('ris_get_document', {
475
614
  truncated: z
476
615
  .boolean()
477
616
  .optional()
478
- .describe('Present and true when the full text isn’t inline because a section outline was returned instead (kind: outline) — either the document overflowed the byte budget, or a sections:[…] selector matched nothing. The notice names which. Retrieve sections via the sections input, or fetch content_urls for the whole artifact.'),
617
+ .describe('Present and true when the full text isn’t inline because an outline was returned instead (kind: outline) — either the document overflowed the byte budget, or a sections:[…] selector matched nothing. The notice names which. Retrieve entries via the sections input, or fetch content_urls for the whole artifact.'),
479
618
  kind: z
480
619
  .enum(['full', 'outline'])
481
- .describe('full — the complete response (document text, selected sections, or rendition URLs). outline — sections lists the retrievable §/Artikel/Anlage units instead of the text, either because it overflowed the byte budget or because a sections:[…] selector matched nothing; re-call with sections:[…] naming entries from it.'),
620
+ .describe('full — the complete response (document text, selected entries, or rendition URLs). outline — sections lists the retrievable entries instead of the text, either because the document overflowed the byte budget or because a sections:[…] selector matched nothing; re-call with sections:[…] naming entries from it.'),
482
621
  sections: z
483
- .array(OUTLINE_VARIANT.shape.sections.element.describe('A retrievable §/Artikel/Anlage section — its name and UTF-8 byte size.'))
622
+ .array(OUTLINE_VARIANT.shape.sections.element.describe('A retrievable entry — a §/Artikel/Anlage section or a Part n of N byte window, with its UTF-8 byte size.'))
484
623
  .optional()
485
- .describe('Present when kind = outline: the document’s §/Artikel/Anlage sections, largest first, each with its UTF-8 byte size. Copy names into the sections input verbatim to retrieve them.'),
624
+ .describe('Present when kind = outline: the document’s addressable entries, each with its UTF-8 byte size — §/Artikel/Anlage sections listed largest first, or, when the markdown carries no such headings, Part n of N byte windows listed in document order and summing to byte_size. Copy names into the sections input verbatim to retrieve them; naming several in one call returns their text concatenated in document order, with nothing inserted between them.'),
486
625
  binding_status: z
487
626
  .enum(BINDING_STATUSES)
488
627
  .describe('Legal binding status: authentic (amtssigniert, legally binding), consolidated_informational (consolidated view — not binding), historical_record (superseded/pre-e-Recht promulgation), decision (court/tribunal ruling), preparatory (draft/bill/minutes), administrative_directive (binds the administration, not citizens), or translation (unofficial English).'),
@@ -623,13 +762,18 @@ export const risGetDocument = tool('ris_get_document', {
623
762
  // roster (driven by the no-match, not by the byte budget) so the caller can tell "your
624
763
  // names were wrong" from "that section really is that large".
625
764
  if (requestedSections.length > 0) {
626
- const selection = selectDocumentSections(rendition.text, requestedSections);
765
+ const selection = selectDocumentSections(rendition.text, requestedSections, format);
766
+ // How the roster was built — the two kinds want different re-call guidance, and for a
767
+ // windowed roster the outline exists *because* of the byte budget.
768
+ const roster = selection.windowed
769
+ ? `${selection.available.length} contiguous byte windows, since it carries no §/Artikel/Anlage headings and overflows the ${OUTLINE_BUDGET_BYTES}-byte budget`
770
+ : `${selection.available.length} §/Artikel/Anlage sections`;
627
771
  if (selection.text !== '') {
628
772
  if (selection.unmatched.length > 0) {
629
773
  // Names candidates from the roster rather than promising an outline on a re-call
630
774
  // without sections:[…] — that re-call only outlines a document over the byte
631
775
  // budget, and returns the whole text for every document under it.
632
- ctx.enrich.notice(`Returned only the matched sections — ${quoteNames(selection.unmatched)} named no section of this document and ${selection.unmatched.length === 1 ? 'was' : 'were'} skipped. This document has ${selection.available.length} §/Artikel/Anlage sections; copy a name verbatim and re-call ris_get_document with the same addressing — e.g. ${exampleSectionNames(selection.available)}.`);
776
+ ctx.enrich.notice(`Returned only the matched entries — ${quoteNames(selection.unmatched)} named no entry of this document and ${selection.unmatched.length === 1 ? 'was' : 'were'} skipped. This document has ${roster}; copy a name verbatim and re-call ris_get_document with the same addressing — e.g. ${exampleSectionNames(selection.available)}.`);
633
777
  }
634
778
  return {
635
779
  ...base,
@@ -639,7 +783,9 @@ export const risGetDocument = tool('ris_get_document', {
639
783
  };
640
784
  }
641
785
  if (selection.available.length > 0) {
642
- ctx.enrich.notice(`sections:[…] matched nothing — ${quoteNames(selection.unmatched)} named no section of this document, so the outline below is a selector mismatch, not a size overflow. Copy a name verbatim from sections and re-call ris_get_document with the same addressing — e.g. ${exampleSectionNames(selection.available)}.`);
786
+ ctx.enrich.notice(selection.windowed
787
+ ? `sections:[…] matched nothing — ${quoteNames(selection.unmatched)} named no entry of this document. It is addressed as ${roster}. Copy a name verbatim from sections and re-call ris_get_document with the same addressing — e.g. ${exampleSectionNames(selection.available)}.`
788
+ : `sections:[…] matched nothing — ${quoteNames(selection.unmatched)} named no section of this document, so the outline below is a selector mismatch, not a size overflow. Copy a name verbatim from sections and re-call ris_get_document with the same addressing — e.g. ${exampleSectionNames(selection.available)}.`);
643
789
  return {
644
790
  ...base,
645
791
  kind: 'outline',
@@ -648,12 +794,18 @@ export const risGetDocument = tool('ris_get_document', {
648
794
  ...(byteSize !== undefined && { byte_size: byteSize }),
649
795
  };
650
796
  }
651
- // Nothing to select from and nothing to list — an html/xml rendition or markdown with
652
- // no §/Artikel/Anlage headings. Say so, then return the document whole below.
653
- ctx.enrich.notice(`sections:[…] was ignored — this rendition carries no §/Artikel/Anlage headings to select from, so ${quoteNames(selection.unmatched)} could not be resolved. The whole document follows.`);
797
+ // Nothing to select from and nothing to list — a raw html/xml rendition, or markdown
798
+ // under the budget with no §/Artikel/Anlage headings. Both halves are named: a caller
799
+ // told only about headings would retry the same selector on a larger document of the
800
+ // same shape. Say so, then return the document whole below.
801
+ ctx.enrich.notice(`sections:[…] was ignored — this rendition has no addressable entries, so ${quoteNames(selection.unmatched)} could not be resolved. Raw html and xml are never sliced; markdown carries entries when it has §/Artikel/Anlage headings, or once it overflows the ${OUTLINE_BUDGET_BYTES}-byte budget. The whole document follows.`);
654
802
  }
655
- // Disclosure — whole text under budget (or unsegmentable), else a section outline.
656
- const decision = outlineDocument(rendition.text, (sections) => `Document too large to return in full${byteSize !== undefined ? ` (${byteSize} bytes)` : ''}. Re-call ris_get_document with the same addressing plus sections:[…] naming entries from the outline — e.g. ${exampleSectionNames(sections)}.`);
803
+ // Disclosure — whole text under budget (or with nothing addressable), else an outline.
804
+ const addressable = addressableSections(rendition.text, format);
805
+ const size = byteSize !== undefined ? ` (${byteSize} bytes)` : '';
806
+ const decision = outlineDocument(rendition.text, addressable, (sections) => addressable[0]?.kind === 'window'
807
+ ? `Document too large to return in full${size}. It carries no §/Artikel/Anlage headings, so the outline lists ${sections.length} contiguous windows covering the whole text — read them in the order they are named, and expect a window to open mid-sentence, since the cuts are line breaks rather than sentence or § boundaries. Re-call ris_get_document with the same addressing plus sections:[…] naming entries from the outline — e.g. ${exampleSectionNames(addressable)}.`
808
+ : `Document too large to return in full${size}. Re-call ris_get_document with the same addressing plus sections:[…] naming entries from the outline — e.g. ${exampleSectionNames(sections)}.`);
657
809
  if (decision.kind === 'full') {
658
810
  return {
659
811
  ...base,
@@ -1 +1 @@
1
- {"version":3,"file":"ris-get-document.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-get-document.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ris-get-document.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-get-document.tool.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,9 @@
8
8
  * RESULT, never a throw — the agent self-corrects from structured guidance better than from
9
9
  * an exception (fleet precedent: eur-lex lookup_celex, pubmed/courtlistener lookup_citation).
10
10
  * The only thrown errors are `upstream_error` (a routed search failed upstream) and
11
- * `upstream_timeout` (it did not answer within the deadline). A service
12
- * InvalidParams/ValidationError during a routed lookup is a failed deterministic filter =
13
- * no resolution = `found: false`, not an error.
11
+ * `upstream_timeout` (it did not answer within the deadline). A service `ValidationError`
12
+ * during a routed lookup is a failed deterministic filter = no resolution = `found: false`,
13
+ * not an error.
14
14
  *
15
15
  * The resolved record is produced by the corresponding search tool's own record mapper, so an
16
16
  * agent chaining a resolved citation sees exactly the shape that tool returns.
@@ -1 +1 @@
1
- {"version":3,"file":"ris-lookup-citation.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-lookup-citation.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAwf3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+S5B,CAAC"}
1
+ {"version":3,"file":"ris-lookup-citation.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/ris-lookup-citation.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAwf3E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4S5B,CAAC"}
@@ -8,9 +8,9 @@
8
8
  * RESULT, never a throw — the agent self-corrects from structured guidance better than from
9
9
  * an exception (fleet precedent: eur-lex lookup_celex, pubmed/courtlistener lookup_citation).
10
10
  * The only thrown errors are `upstream_error` (a routed search failed upstream) and
11
- * `upstream_timeout` (it did not answer within the deadline). A service
12
- * InvalidParams/ValidationError during a routed lookup is a failed deterministic filter =
13
- * no resolution = `found: false`, not an error.
11
+ * `upstream_timeout` (it did not answer within the deadline). A service `ValidationError`
12
+ * during a routed lookup is a failed deterministic filter = no resolution = `found: false`,
13
+ * not an error.
14
14
  *
15
15
  * The resolved record is produced by the corresponding search tool's own record mapper, so an
16
16
  * agent chaining a resolved citation sees exactly the shape that tool returns.
@@ -480,7 +480,7 @@ export const risLookupCitation = tool('ris_lookup_citation', {
480
480
  * Run a routed search: map an upstream failure to this tool's `upstream_error` or
481
481
  * `upstream_timeout` (separate codes since 0.10.17 split them — `ctx.fail` resolves the
482
482
  * code from the contract entry, so one reason cannot carry both), and a failed
483
- * deterministic filter (InvalidParams / ValidationError) to a not-resolved `null`.
483
+ * deterministic filter (`ValidationError`) to a not-resolved `null`.
484
484
  */
485
485
  const runSearch = async (run) => {
486
486
  try {
@@ -497,8 +497,7 @@ export const risLookupCitation = tool('ris_lookup_citation', {
497
497
  ...ctx.recoveryFor('upstream_timeout'),
498
498
  });
499
499
  }
500
- if (err.code === JsonRpcErrorCode.InvalidParams ||
501
- err.code === JsonRpcErrorCode.ValidationError) {
500
+ if (err.code === JsonRpcErrorCode.ValidationError) {
502
501
  return null;
503
502
  }
504
503
  throw err;