@cyanheads/federal-regulations-mcp-server 0.2.0 → 0.2.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 (63) hide show
  1. package/AGENTS.md +3 -1
  2. package/CLAUDE.md +3 -1
  3. package/README.md +5 -1
  4. package/changelog/0.2.x/0.2.1.md +18 -0
  5. package/changelog/0.2.x/0.2.2.md +15 -0
  6. package/dist/mcp-server/resources/definitions/cfr-section.resource.d.ts +12 -1
  7. package/dist/mcp-server/resources/definitions/cfr-section.resource.d.ts.map +1 -1
  8. package/dist/mcp-server/resources/definitions/cfr-section.resource.js +19 -3
  9. package/dist/mcp-server/resources/definitions/cfr-section.resource.js.map +1 -1
  10. package/dist/mcp-server/resources/definitions/document.resource.d.ts +12 -1
  11. package/dist/mcp-server/resources/definitions/document.resource.d.ts.map +1 -1
  12. package/dist/mcp-server/resources/definitions/document.resource.js +15 -0
  13. package/dist/mcp-server/resources/definitions/document.resource.js.map +1 -1
  14. package/dist/mcp-server/resources/definitions/index.d.ts +22 -2
  15. package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -1
  16. package/dist/mcp-server/tools/definitions/browse-cfr.tool.d.ts +2 -2
  17. package/dist/mcp-server/tools/definitions/browse-cfr.tool.d.ts.map +1 -1
  18. package/dist/mcp-server/tools/definitions/browse-cfr.tool.js +2 -2
  19. package/dist/mcp-server/tools/definitions/browse-cfr.tool.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/find-comments.tool.d.ts +3 -3
  21. package/dist/mcp-server/tools/definitions/find-comments.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/find-comments.tool.js +8 -4
  23. package/dist/mcp-server/tools/definitions/find-comments.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/get-cfr-section.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/get-cfr-section.tool.js +11 -1
  26. package/dist/mcp-server/tools/definitions/get-cfr-section.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/get-docket.tool.d.ts +5 -4
  28. package/dist/mcp-server/tools/definitions/get-docket.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/get-docket.tool.js +10 -5
  30. package/dist/mcp-server/tools/definitions/get-docket.tool.js.map +1 -1
  31. package/dist/mcp-server/tools/definitions/get-document.tool.d.ts +1 -1
  32. package/dist/mcp-server/tools/definitions/get-document.tool.js +1 -1
  33. package/dist/mcp-server/tools/definitions/get-document.tool.js.map +1 -1
  34. package/dist/mcp-server/tools/definitions/index.d.ts +9 -9
  35. package/dist/services/ecfr/ecfr-service.d.ts +20 -2
  36. package/dist/services/ecfr/ecfr-service.d.ts.map +1 -1
  37. package/dist/services/ecfr/ecfr-service.js +50 -28
  38. package/dist/services/ecfr/ecfr-service.js.map +1 -1
  39. package/dist/services/ecfr/xml.d.ts +20 -2
  40. package/dist/services/ecfr/xml.d.ts.map +1 -1
  41. package/dist/services/ecfr/xml.js +77 -10
  42. package/dist/services/ecfr/xml.js.map +1 -1
  43. package/dist/services/ecfr-mirror/ecfr-mirror.d.ts.map +1 -1
  44. package/dist/services/ecfr-mirror/ecfr-mirror.js +31 -5
  45. package/dist/services/ecfr-mirror/ecfr-mirror.js.map +1 -1
  46. package/dist/services/federal-register/federal-register-service.d.ts +15 -3
  47. package/dist/services/federal-register/federal-register-service.d.ts.map +1 -1
  48. package/dist/services/federal-register/federal-register-service.js +38 -10
  49. package/dist/services/federal-register/federal-register-service.js.map +1 -1
  50. package/dist/services/regulations-gov/regulations-gov-service.d.ts +27 -7
  51. package/dist/services/regulations-gov/regulations-gov-service.d.ts.map +1 -1
  52. package/dist/services/regulations-gov/regulations-gov-service.js +77 -18
  53. package/dist/services/regulations-gov/regulations-gov-service.js.map +1 -1
  54. package/dist/services/upstream-failure.d.ts +110 -0
  55. package/dist/services/upstream-failure.d.ts.map +1 -0
  56. package/dist/services/upstream-failure.js +143 -0
  57. package/dist/services/upstream-failure.js.map +1 -0
  58. package/package.json +1 -1
  59. package/scripts/_mirror-context.ts +16 -3
  60. package/scripts/ecfr-mirror-init.ts +20 -11
  61. package/scripts/ecfr-mirror-refresh.ts +9 -6
  62. package/scripts/ecfr-mirror-verify.ts +31 -19
  63. package/server.json +3 -3
@@ -16,18 +16,24 @@ import {
16
16
  mirrorScope,
17
17
  mirrorSearch,
18
18
  } from '@/services/ecfr-mirror/ecfr-mirror.js';
19
- import { bootstrapMirrorServices } from './_mirror-context.js';
19
+ import { bootstrapMirrorServices, mirrorLogContext } from './_mirror-context.js';
20
+
21
+ const logContext = (fields: Record<string, unknown>) =>
22
+ mirrorLogContext('ecfr-mirror:verify', fields);
20
23
 
21
24
  await bootstrapMirrorServices();
22
25
 
23
26
  const status = await ecfrMirror.status();
24
- logger.info('eCFR mirror status', {
25
- ready: status.ready,
26
- status: status.status,
27
- total: status.total,
28
- checkpoint: status.checkpoint,
29
- completedAt: status.completedAt,
30
- });
27
+ logger.info(
28
+ 'eCFR mirror status',
29
+ logContext({
30
+ ready: status.ready,
31
+ status: status.status,
32
+ total: status.total,
33
+ checkpoint: status.checkpoint,
34
+ completedAt: status.completedAt,
35
+ }),
36
+ );
31
37
 
32
38
  // A sync that completed can still hold rows a superseded ingester derived
33
39
  // wrongly, and the server refuses to read such an index. An operator seeing a
@@ -42,19 +48,25 @@ if (await mirrorIngestStale()) {
42
48
 
43
49
  if (status.ready) {
44
50
  const scope = await mirrorScope();
45
- logger.info('eCFR mirror title coverage', {
46
- titles: scope.titles.join(', ') || '(none)',
47
- complete: scope.complete,
48
- // A partial index answers only searches scoped to a title it holds;
49
- // everything else, including any all-titles search, routes to live eCFR.
50
- answersAllTitleSearches: scope.complete,
51
- });
51
+ logger.info(
52
+ 'eCFR mirror title coverage',
53
+ logContext({
54
+ titles: scope.titles.join(', ') || '(none)',
55
+ complete: scope.complete,
56
+ // A partial index answers only searches scoped to a title it holds;
57
+ // everything else, including any all-titles search, routes to live eCFR.
58
+ answersAllTitleSearches: scope.complete,
59
+ }),
60
+ );
52
61
 
53
62
  const sample = await mirrorSearch('definitions', undefined, undefined, 3);
54
- logger.info('eCFR mirror sample query "definitions"', {
55
- totalCount: sample.totalCount,
56
- firstHit: sample.results[0]?.cfrCite ?? '(none)',
57
- });
63
+ logger.info(
64
+ 'eCFR mirror sample query "definitions"',
65
+ logContext({
66
+ totalCount: sample.totalCount,
67
+ firstHit: sample.results[0]?.cfrCite ?? '(none)',
68
+ }),
69
+ );
58
70
  }
59
71
 
60
72
  await ecfrMirror.close();
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/federal-regulations-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.2.0",
9
+ "version": "0.2.2",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/federal-regulations-mcp-server",
21
21
  "runtimeHint": "node",
22
- "version": "0.2.0",
22
+ "version": "0.2.2",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -55,7 +55,7 @@
55
55
  "registryBaseUrl": "https://registry.npmjs.org",
56
56
  "identifier": "@cyanheads/federal-regulations-mcp-server",
57
57
  "runtimeHint": "node",
58
- "version": "0.2.0",
58
+ "version": "0.2.2",
59
59
  "packageArguments": [
60
60
  {
61
61
  "type": "positional",