@ansvar/us-regulations-mcp 1.0.0 → 1.2.1

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 (57) hide show
  1. package/README.md +422 -79
  2. package/data/regulations.db +0 -0
  3. package/data/seed/colorado-cpa.json +97 -0
  4. package/data/seed/ffiec.json +103 -0
  5. package/data/seed/mappings/ccpa-nist-csf.json +11 -1
  6. package/data/seed/mappings/hipaa-nist-800-53.json +10 -1
  7. package/data/seed/nydfs.json +122 -0
  8. package/data/seed/sox.json +109 -0
  9. package/dist/index.js +1 -1
  10. package/dist/ingest/adapters/colorado-public.d.ts +25 -0
  11. package/dist/ingest/adapters/colorado-public.d.ts.map +1 -0
  12. package/dist/ingest/adapters/colorado-public.js +76 -0
  13. package/dist/ingest/adapters/colorado-public.js.map +1 -0
  14. package/dist/ingest/adapters/connecticut-cga.d.ts +22 -0
  15. package/dist/ingest/adapters/connecticut-cga.d.ts.map +1 -0
  16. package/dist/ingest/adapters/connecticut-cga.js +116 -0
  17. package/dist/ingest/adapters/connecticut-cga.js.map +1 -0
  18. package/dist/ingest/adapters/ecfr.d.ts +46 -4
  19. package/dist/ingest/adapters/ecfr.d.ts.map +1 -1
  20. package/dist/ingest/adapters/ecfr.js +131 -16
  21. package/dist/ingest/adapters/ecfr.js.map +1 -1
  22. package/dist/ingest/adapters/ffiec.d.ts +42 -0
  23. package/dist/ingest/adapters/ffiec.d.ts.map +1 -0
  24. package/dist/ingest/adapters/ffiec.js +68 -0
  25. package/dist/ingest/adapters/ffiec.js.map +1 -0
  26. package/dist/ingest/adapters/nydfs.d.ts +42 -0
  27. package/dist/ingest/adapters/nydfs.d.ts.map +1 -0
  28. package/dist/ingest/adapters/nydfs.js +68 -0
  29. package/dist/ingest/adapters/nydfs.js.map +1 -0
  30. package/dist/ingest/adapters/regulations-gov.d.ts +11 -12
  31. package/dist/ingest/adapters/regulations-gov.d.ts.map +1 -1
  32. package/dist/ingest/adapters/regulations-gov.js +46 -43
  33. package/dist/ingest/adapters/regulations-gov.js.map +1 -1
  34. package/dist/ingest/adapters/utah-xcode.d.ts +19 -0
  35. package/dist/ingest/adapters/utah-xcode.d.ts.map +1 -0
  36. package/dist/ingest/adapters/utah-xcode.js +112 -0
  37. package/dist/ingest/adapters/utah-xcode.js.map +1 -0
  38. package/dist/ingest/adapters/virginia-law.d.ts +21 -0
  39. package/dist/ingest/adapters/virginia-law.d.ts.map +1 -0
  40. package/dist/ingest/adapters/virginia-law.js +111 -0
  41. package/dist/ingest/adapters/virginia-law.js.map +1 -0
  42. package/package.json +26 -4
  43. package/scripts/build-db.ts +50 -32
  44. package/scripts/check-updates.ts +184 -0
  45. package/scripts/ingest.ts +72 -25
  46. package/src/index.ts +1 -1
  47. package/src/ingest/adapters/colorado-public.ts +96 -0
  48. package/src/ingest/adapters/connecticut-cga.ts +150 -0
  49. package/src/ingest/adapters/ecfr.ts +158 -17
  50. package/src/ingest/adapters/ffiec.ts +77 -0
  51. package/src/ingest/adapters/nydfs.ts +77 -0
  52. package/src/ingest/adapters/regulations-gov.ts +48 -47
  53. package/src/ingest/adapters/utah-xcode.ts +143 -0
  54. package/src/ingest/adapters/virginia-law.ts +140 -0
  55. package/scripts/quality-test.ts +0 -346
  56. package/scripts/test-mcp-tools.ts +0 -187
  57. package/scripts/test-remaining-tools.ts +0 -107
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorado-public.d.ts","sourceRoot":"","sources":["../../../src/ingest/adapters/colorado-public.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,UAAU,EACV,YAAY,EACb,MAAM,iBAAiB,CAAC;AAQzB,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;;IAM5B,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAa3C,aAAa,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;IA+B3C,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI3C,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;CAOhE;AAED,wBAAgB,qBAAqB,IAAI,aAAa,CAErD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Colorado Privacy Act Adapter
3
+ *
4
+ * Fetches Colorado CPA from official Colorado General Assembly sources.
5
+ * Source: C.R.S. § 6-1-1301 to 6-1-1313
6
+ *
7
+ * Official Source: https://leg.colorado.gov/colorado-revised-statutes
8
+ *
9
+ * NOTE: Uses seed data extracted from official Colorado Revised Statutes.
10
+ * The Colorado General Assembly publishes statutes in PDF format at leg.colorado.gov.
11
+ * This adapter uses pre-verified seed data to ensure accuracy and avoid
12
+ * reliance on third-party aggregators.
13
+ */
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+ import { fileURLToPath } from 'url';
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = path.dirname(__filename);
19
+ export class ColoradoLegAdapter {
20
+ regulationId = 'COLORADO_CPA';
21
+ seedPath;
22
+ constructor() {
23
+ this.seedPath = path.join(__dirname, '../../../data/seed/colorado-cpa.json');
24
+ }
25
+ async fetchMetadata() {
26
+ return {
27
+ id: 'COLORADO_CPA',
28
+ full_name: 'Colorado Privacy Act',
29
+ citation: 'C.R.S. §6-1-1301 to 6-1-1313',
30
+ effective_date: '2023-07-01',
31
+ last_amended: '2024-01-01',
32
+ source_url: 'https://leg.colorado.gov/colorado-revised-statutes',
33
+ jurisdiction: 'colorado',
34
+ regulation_type: 'statute',
35
+ };
36
+ }
37
+ async *fetchSections() {
38
+ console.log('Loading Colorado CPA from official seed data...');
39
+ try {
40
+ const seedData = JSON.parse(fs.readFileSync(this.seedPath, 'utf-8'));
41
+ if (!seedData.sections || !Array.isArray(seedData.sections)) {
42
+ throw new Error('Invalid seed data format');
43
+ }
44
+ const sections = seedData.sections.map((s) => ({
45
+ sectionNumber: s.sectionNumber,
46
+ title: s.title,
47
+ text: s.text,
48
+ chapter: s.chapter || 'Colorado Privacy Act',
49
+ }));
50
+ console.log(` Loaded ${sections.length} sections from seed data`);
51
+ // Validate minimum section count
52
+ if (sections.length < 10) {
53
+ throw new Error(`Expected at least 10 sections, got ${sections.length}`);
54
+ }
55
+ yield sections;
56
+ }
57
+ catch (error) {
58
+ console.error('Failed to load Colorado CPA seed data:', error);
59
+ throw error;
60
+ }
61
+ }
62
+ async extractDefinitions() {
63
+ return [];
64
+ }
65
+ async checkForUpdates(lastFetched) {
66
+ // Seed data is static - updates require manual verification
67
+ return {
68
+ hasChanges: false,
69
+ changes: ['Colorado CPA uses verified seed data. Check leg.colorado.gov for updates.']
70
+ };
71
+ }
72
+ }
73
+ export function createColoradoAdapter() {
74
+ return new ColoradoLegAdapter();
75
+ }
76
+ //# sourceMappingURL=colorado-public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorado-public.js","sourceRoot":"","sources":["../../../src/ingest/adapters/colorado-public.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,OAAO,kBAAkB;IACZ,YAAY,GAAG,cAAc,CAAC;IAC9B,QAAQ,CAAS;IAElC;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO;YACL,EAAE,EAAE,cAAc;YAClB,SAAS,EAAE,sBAAsB;YACjC,QAAQ,EAAE,8BAA8B;YACxC,cAAc,EAAE,YAAY;YAC5B,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,oDAAoD;YAChE,YAAY,EAAE,UAAU;YACxB,eAAe,EAAE,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,aAAa;QAClB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAE/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAErE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,QAAQ,GAAc,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC7D,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,sBAAsB;aAC7C,CAAC,CAAC,CAAC;YAEJ,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,0BAA0B,CAAC,CAAC;YAEnE,iCAAiC;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,QAAQ,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAiB;QACrC,4DAA4D;QAC5D,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,CAAC,2EAA2E,CAAC;SACvF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Connecticut General Assembly Adapter
3
+ *
4
+ * Fetches Connecticut CTDPA from Connecticut General Assembly website.
5
+ * Source: Conn. Gen. Stat. § 42-515 to 42-524
6
+ *
7
+ * NOTE: This adapter parses a SINGLE page containing ALL sections,
8
+ * unlike Virginia/Colorado which fetch individual section pages.
9
+ */
10
+ import { SourceAdapter, RegulationMetadata, Section, Definition, UpdateStatus } from '../framework.js';
11
+ export declare class ConnecticutCGAAdapter implements SourceAdapter {
12
+ private readonly regulationId;
13
+ private readonly chapterUrl;
14
+ fetchMetadata(): Promise<RegulationMetadata>;
15
+ fetchSections(): AsyncGenerator<Section[]>;
16
+ private fetchWithHttps;
17
+ private parseSections;
18
+ extractDefinitions(): Promise<Definition[]>;
19
+ checkForUpdates(lastFetched: Date): Promise<UpdateStatus>;
20
+ }
21
+ export declare function createConnecticutAdapter(): SourceAdapter;
22
+ //# sourceMappingURL=connecticut-cga.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connecticut-cga.d.ts","sourceRoot":"","sources":["../../../src/ingest/adapters/connecticut-cga.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,UAAU,EACV,YAAY,EACb,MAAM,iBAAiB,CAAC;AAWzB,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAC2B;IAEhD,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAa3C,aAAa,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAmBnC,cAAc;IAgB5B,OAAO,CAAC,aAAa;IAyDf,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAK3C,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;CAGhE;AAED,wBAAgB,wBAAwB,IAAI,aAAa,CAExD"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Connecticut General Assembly Adapter
3
+ *
4
+ * Fetches Connecticut CTDPA from Connecticut General Assembly website.
5
+ * Source: Conn. Gen. Stat. § 42-515 to 42-524
6
+ *
7
+ * NOTE: This adapter parses a SINGLE page containing ALL sections,
8
+ * unlike Virginia/Colorado which fetch individual section pages.
9
+ */
10
+ import * as cheerio from 'cheerio';
11
+ import https from 'https';
12
+ class ScrapingError extends Error {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = 'ScrapingError';
16
+ }
17
+ }
18
+ export class ConnecticutCGAAdapter {
19
+ regulationId = 'CONNECTICUT_CTDPA';
20
+ chapterUrl = 'https://www.cga.ct.gov/current/pub/chap_743jj.htm';
21
+ async fetchMetadata() {
22
+ return {
23
+ id: 'CONNECTICUT_CTDPA',
24
+ full_name: 'Connecticut Data Privacy Act',
25
+ citation: 'Conn. Gen. Stat. §42-515 to 42-524',
26
+ effective_date: '2023-07-01',
27
+ last_amended: '2023-07-01',
28
+ source_url: this.chapterUrl,
29
+ jurisdiction: 'connecticut',
30
+ regulation_type: 'statute',
31
+ };
32
+ }
33
+ async *fetchSections() {
34
+ console.log('Fetching Connecticut CTDPA from single chapter page...');
35
+ // Connecticut's certificate has SSL issues, use https module directly
36
+ const html = await this.fetchWithHttps(this.chapterUrl);
37
+ const $ = cheerio.load(html);
38
+ const sections = this.parseSections($);
39
+ if (sections.length < 8) {
40
+ throw new ScrapingError(`Expected at least 8 sections, got ${sections.length}`);
41
+ }
42
+ console.log(` ✅ Parsed ${sections.length} sections from chapter page`);
43
+ yield sections;
44
+ }
45
+ async fetchWithHttps(url) {
46
+ return new Promise((resolve, reject) => {
47
+ https.get(url, { rejectUnauthorized: false }, (res) => {
48
+ if (res.statusCode !== 200) {
49
+ reject(new ScrapingError(`HTTP ${res.statusCode}`));
50
+ return;
51
+ }
52
+ let data = '';
53
+ res.on('data', (chunk) => data += chunk);
54
+ res.on('end', () => resolve(data));
55
+ res.on('error', reject);
56
+ }).on('error', reject);
57
+ });
58
+ }
59
+ parseSections($) {
60
+ const sections = [];
61
+ // Find all paragraphs containing section headers (span.catchln)
62
+ $('span.catchln[id^="sec_42-"]').each((_idx, elem) => {
63
+ const $span = $(elem);
64
+ const id = $span.attr('id');
65
+ if (!id)
66
+ return;
67
+ // Extract section number from id: "sec_42-515" -> "515"
68
+ const idMatch = id.match(/sec_42-(\d+)/);
69
+ if (!idMatch)
70
+ return;
71
+ const sectionNum = idMatch[1];
72
+ // Extract title from span text: "Sec. 42-515. Definitions." -> "Definitions"
73
+ const spanText = $span.text().trim();
74
+ const titleMatch = spanText.match(/^Sec\.\s+42-\d+\.\s+(.+?)\.?\s*$/);
75
+ const title = titleMatch ? titleMatch[1].trim() : `Section 42-${sectionNum}`;
76
+ // Get the parent paragraph and all following paragraphs until next section
77
+ const $startPara = $span.parent();
78
+ let fullText = $startPara.text().trim();
79
+ // Collect following paragraphs until we hit another section marker
80
+ let $next = $startPara.next('p');
81
+ while ($next.length > 0) {
82
+ // Stop if this paragraph contains another section marker
83
+ if ($next.find('span.catchln[id^="sec_42-"]').length > 0) {
84
+ break;
85
+ }
86
+ const nextText = $next.text().trim();
87
+ if (nextText.length > 0) {
88
+ fullText += '\n\n' + nextText;
89
+ }
90
+ $next = $next.next('p');
91
+ }
92
+ // Only include sections in the 42-515 to 42-526 range (CTDPA)
93
+ const num = parseInt(sectionNum);
94
+ if (num >= 515 && num <= 526) {
95
+ sections.push({
96
+ sectionNumber: `42-${sectionNum}`,
97
+ title: title,
98
+ text: fullText,
99
+ });
100
+ console.log(` Found § 42-${sectionNum}: ${title}`);
101
+ }
102
+ });
103
+ return sections;
104
+ }
105
+ async extractDefinitions() {
106
+ // Definitions are in section 42-515, could be extracted if needed
107
+ return [];
108
+ }
109
+ async checkForUpdates(lastFetched) {
110
+ return { hasChanges: false };
111
+ }
112
+ }
113
+ export function createConnecticutAdapter() {
114
+ return new ConnecticutCGAAdapter();
115
+ }
116
+ //# sourceMappingURL=connecticut-cga.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connecticut-cga.js","sourceRoot":"","sources":["../../../src/ingest/adapters/connecticut-cga.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,16 @@
8
8
  * Uses the eCFR API: https://www.ecfr.gov/developers/documentation/api/v1
9
9
  */
10
10
  import { SourceAdapter, RegulationMetadata, Section, Definition, UpdateStatus } from '../framework.js';
11
+ /**
12
+ * Configuration for regulation metadata fallback
13
+ */
14
+ export interface RegulationConfig {
15
+ full_name: string;
16
+ citation: string;
17
+ effective_date: string;
18
+ jurisdiction: 'federal' | 'state';
19
+ regulation_type: 'rule' | 'statute';
20
+ }
11
21
  /**
12
22
  * Adapter for fetching HIPAA from eCFR API
13
23
  */
@@ -15,12 +25,19 @@ export declare class EcfrAdapter implements SourceAdapter {
15
25
  private readonly regulationId;
16
26
  private readonly cfr_title;
17
27
  private readonly cfr_parts;
18
- constructor(regulationId: string, cfr_title: number, cfr_parts: number[]);
28
+ private readonly fallbackMetadata;
29
+ constructor(regulationId: string, cfr_title: number, cfr_parts: number[], fallbackMetadata: RegulationConfig);
30
+ /**
31
+ * Fetch metadata from eCFR API
32
+ * Returns effective_date and last_amended from API with fallback metadata for other fields
33
+ */
34
+ private fetchMetadataFromAPI;
19
35
  /**
20
- * Fetch HIPAA metadata
36
+ * Fetch regulation metadata
21
37
  *
22
- * PLACEHOLDER: Returns hardcoded HIPAA metadata
23
- * TODO: Integrate with eCFR API to fetch live metadata
38
+ * Hybrid approach:
39
+ * 1. Try to fetch effective_date and last_amended from eCFR API
40
+ * 2. Fall back to hardcoded metadata if API unavailable
24
41
  */
25
42
  fetchMetadata(): Promise<RegulationMetadata>;
26
43
  /**
@@ -73,4 +90,29 @@ export declare class EcfrAdapter implements SourceAdapter {
73
90
  * Factory function to create HIPAA adapter
74
91
  */
75
92
  export declare function createHipaaAdapter(): EcfrAdapter;
93
+ /**
94
+ * Factory function to create GLBA adapter
95
+ * Gramm-Leach-Bliley Act - Safeguards Rule
96
+ */
97
+ export declare function createGlbaAdapter(): EcfrAdapter;
98
+ /**
99
+ * Factory function to create FERPA adapter
100
+ * Family Educational Rights and Privacy Act
101
+ */
102
+ export declare function createFerpaAdapter(): EcfrAdapter;
103
+ /**
104
+ * Factory function to create COPPA adapter
105
+ * Children's Online Privacy Protection Act Rule
106
+ */
107
+ export declare function createCoppaAdapter(): EcfrAdapter;
108
+ /**
109
+ * Factory function to create FDA 21 CFR Part 11 adapter
110
+ * Electronic Records and Electronic Signatures
111
+ */
112
+ export declare function createFdaAdapter(): EcfrAdapter;
113
+ /**
114
+ * Factory function to create EPA RMP adapter
115
+ * Risk Management Plan Rule
116
+ */
117
+ export declare function createEpaRmpAdapter(): EcfrAdapter;
76
118
  //# sourceMappingURL=ecfr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecfr.d.ts","sourceRoot":"","sources":["../../../src/ingest/adapters/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,UAAU,EACV,YAAY,EACb,MAAM,iBAAiB,CAAC;AAGzB;;GAEG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;gBAEzB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;IAMxE;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAclD;;;;;OAKG;IACI,aAAa,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;IAoHjD;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAyB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;YACW,aAAa;IAkB3B;;OAEG;YACW,cAAc;IA6B5B;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAqC/D;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAWlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAEhD"}
1
+ {"version":3,"file":"ecfr.d.ts","sourceRoot":"","sources":["../../../src/ingest/adapters/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,UAAU,EACV,YAAY,EACb,MAAM,iBAAiB,CAAC;AAGzB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC;IAClC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;gBAGlD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,gBAAgB;IAQpC;;;OAGG;YACW,oBAAoB;IAoClC;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoBlD;;;;;OAKG;IACI,aAAa,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;IAoHjD;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAyB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;YACW,aAAa;IAkB3B;;OAEG;YACW,cAAc;IA6B5B;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAqC/D;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAWlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAQhD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAQ/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAQhD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAQhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAQ9C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAQjD"}
@@ -15,29 +15,73 @@ export class EcfrAdapter {
15
15
  regulationId;
16
16
  cfr_title;
17
17
  cfr_parts;
18
- constructor(regulationId, cfr_title, cfr_parts) {
18
+ fallbackMetadata;
19
+ constructor(regulationId, cfr_title, cfr_parts, fallbackMetadata) {
19
20
  this.regulationId = regulationId;
20
21
  this.cfr_title = cfr_title;
21
22
  this.cfr_parts = cfr_parts;
23
+ this.fallbackMetadata = fallbackMetadata;
22
24
  }
23
25
  /**
24
- * Fetch HIPAA metadata
26
+ * Fetch metadata from eCFR API
27
+ * Returns effective_date and last_amended from API with fallback metadata for other fields
28
+ */
29
+ async fetchMetadataFromAPI() {
30
+ try {
31
+ // Get latest available date for this CFR title
32
+ const latestDate = await this.getLatestDate();
33
+ // Fetch structure JSON (lighter than full XML)
34
+ const url = `https://www.ecfr.gov/api/versioner/v1/structure/${latestDate}/title-${this.cfr_title}.json`;
35
+ const response = await fetch(url);
36
+ if (!response.ok) {
37
+ throw new Error(`eCFR API returned ${response.status} for ${url}`);
38
+ }
39
+ const data = await response.json();
40
+ // Extract dates from API response
41
+ // Note: eCFR structure API may not have these exact fields, using latest date as proxy
42
+ const effectiveDate = data.effective_date || latestDate;
43
+ const lastAmended = data.last_amended || latestDate;
44
+ return {
45
+ id: this.regulationId,
46
+ full_name: this.fallbackMetadata.full_name,
47
+ citation: this.fallbackMetadata.citation,
48
+ effective_date: effectiveDate,
49
+ last_amended: lastAmended,
50
+ source_url: `https://www.ecfr.gov/current/title-${this.cfr_title}`,
51
+ jurisdiction: this.fallbackMetadata.jurisdiction,
52
+ regulation_type: this.fallbackMetadata.regulation_type
53
+ };
54
+ }
55
+ catch (error) {
56
+ // Re-throw to be caught by fetchMetadata
57
+ throw error;
58
+ }
59
+ }
60
+ /**
61
+ * Fetch regulation metadata
25
62
  *
26
- * PLACEHOLDER: Returns hardcoded HIPAA metadata
27
- * TODO: Integrate with eCFR API to fetch live metadata
63
+ * Hybrid approach:
64
+ * 1. Try to fetch effective_date and last_amended from eCFR API
65
+ * 2. Fall back to hardcoded metadata if API unavailable
28
66
  */
29
67
  async fetchMetadata() {
30
- // Placeholder metadata for HIPAA
31
- return {
32
- id: this.regulationId,
33
- full_name: 'Health Insurance Portability and Accountability Act',
34
- citation: '45 CFR Parts 160, 162, 164',
35
- effective_date: '2003-04-14',
36
- last_amended: '2013-01-25',
37
- source_url: 'https://www.ecfr.gov/current/title-45',
38
- jurisdiction: 'federal',
39
- regulation_type: 'rule',
40
- };
68
+ try {
69
+ return await this.fetchMetadataFromAPI();
70
+ }
71
+ catch (error) {
72
+ console.warn(`⚠️ eCFR API unavailable for ${this.regulationId}, using fallback metadata`);
73
+ console.warn(` Error: ${error instanceof Error ? error.message : String(error)}`);
74
+ return {
75
+ id: this.regulationId,
76
+ full_name: this.fallbackMetadata.full_name,
77
+ citation: this.fallbackMetadata.citation,
78
+ effective_date: this.fallbackMetadata.effective_date,
79
+ last_amended: this.fallbackMetadata.effective_date, // Use effective_date as fallback
80
+ source_url: `https://www.ecfr.gov/current/title-${this.cfr_title}`,
81
+ jurisdiction: this.fallbackMetadata.jurisdiction,
82
+ regulation_type: this.fallbackMetadata.regulation_type
83
+ };
84
+ }
41
85
  }
42
86
  /**
43
87
  * Fetch all HIPAA sections
@@ -350,6 +394,77 @@ export class EcfrAdapter {
350
394
  * Factory function to create HIPAA adapter
351
395
  */
352
396
  export function createHipaaAdapter() {
353
- return new EcfrAdapter('HIPAA', 45, [160, 162, 164]);
397
+ return new EcfrAdapter('HIPAA', 45, [160, 162, 164], {
398
+ full_name: 'Health Insurance Portability and Accountability Act',
399
+ citation: '45 CFR Parts 160, 162, 164',
400
+ effective_date: '2003-04-14',
401
+ jurisdiction: 'federal',
402
+ regulation_type: 'rule'
403
+ });
404
+ }
405
+ /**
406
+ * Factory function to create GLBA adapter
407
+ * Gramm-Leach-Bliley Act - Safeguards Rule
408
+ */
409
+ export function createGlbaAdapter() {
410
+ return new EcfrAdapter('GLBA', 16, [314], {
411
+ full_name: 'Gramm-Leach-Bliley Act - Safeguards Rule',
412
+ citation: '16 CFR Part 314',
413
+ effective_date: '2003-05-23',
414
+ jurisdiction: 'federal',
415
+ regulation_type: 'rule'
416
+ });
417
+ }
418
+ /**
419
+ * Factory function to create FERPA adapter
420
+ * Family Educational Rights and Privacy Act
421
+ */
422
+ export function createFerpaAdapter() {
423
+ return new EcfrAdapter('FERPA', 34, [99], {
424
+ full_name: 'Family Educational Rights and Privacy Act',
425
+ citation: '34 CFR Part 99',
426
+ effective_date: '2009-01-03',
427
+ jurisdiction: 'federal',
428
+ regulation_type: 'rule'
429
+ });
430
+ }
431
+ /**
432
+ * Factory function to create COPPA adapter
433
+ * Children's Online Privacy Protection Act Rule
434
+ */
435
+ export function createCoppaAdapter() {
436
+ return new EcfrAdapter('COPPA', 16, [312], {
437
+ full_name: "Children's Online Privacy Protection Act Rule",
438
+ citation: '16 CFR Part 312',
439
+ effective_date: '2013-07-01',
440
+ jurisdiction: 'federal',
441
+ regulation_type: 'rule'
442
+ });
443
+ }
444
+ /**
445
+ * Factory function to create FDA 21 CFR Part 11 adapter
446
+ * Electronic Records and Electronic Signatures
447
+ */
448
+ export function createFdaAdapter() {
449
+ return new EcfrAdapter('FDA_CFR_11', 21, [11], {
450
+ full_name: 'FDA Electronic Records and Electronic Signatures',
451
+ citation: '21 CFR Part 11',
452
+ effective_date: '1997-08-20',
453
+ jurisdiction: 'federal',
454
+ regulation_type: 'rule'
455
+ });
456
+ }
457
+ /**
458
+ * Factory function to create EPA RMP adapter
459
+ * Risk Management Plan Rule
460
+ */
461
+ export function createEpaRmpAdapter() {
462
+ return new EcfrAdapter('EPA_RMP', 40, [68], {
463
+ full_name: 'EPA Risk Management Plan Rule',
464
+ citation: '40 CFR Part 68',
465
+ effective_date: '2017-01-13',
466
+ jurisdiction: 'federal',
467
+ regulation_type: 'rule'
468
+ });
354
469
  }
355
470
  //# sourceMappingURL=ecfr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecfr.js","sourceRoot":"","sources":["../../../src/ingest/adapters/ecfr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAO,WAAW;IACL,YAAY,CAAS;IACrB,SAAS,CAAS;IAClB,SAAS,CAAW;IAErC,YAAY,YAAoB,EAAE,SAAiB,EAAE,SAAmB;QACtE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,iCAAiC;QACjC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,YAAY;YACrB,SAAS,EAAE,qDAAqD;YAChE,QAAQ,EAAE,4BAA4B;YACtC,cAAc,EAAE,YAAY;YAC5B,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,uCAAuC;YACnD,YAAY,EAAE,SAAS;YACvB,eAAe,EAAE,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,CAAC,aAAa;QAClB,+CAA+C;QAC/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,8CAA8C,IAAI,UAAU,IAAI,CAAC,SAAS,MAAM,CAAC;QAE7F,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,CAAC,CAAC;QAEpE,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtC,YAAY;QACZ,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI;YACzB,YAAY,EAAE,OAAO;YACrB,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErC,uCAAuC;QACvC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,6EAA6E;QAC7E,sGAAsG;QACtG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,MAAM,SAAS,GAAG,CAAC,IAAS,EAAS,EAAE;YACrC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAEjD,MAAM,KAAK,GAAU,EAAE,CAAC;YAExB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,CAAC;YAED,0BAA0B;YAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;wBAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,mBAAmB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAExE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAEhD,gCAAgC;YAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,KAAK,CAAC,CAAC;YAE/C,oDAAoD;YACpD,MAAM,YAAY,GAAG,CAAC,IAAS,EAAS,EAAE;gBACxC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,EAAE,CAAC;gBAEjD,MAAM,IAAI,GAAU,EAAE,CAAC;gBAEvB,sCAAsC;gBACtC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtC,CAAC;gBAED,oDAAoD;gBACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;4BAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;wBACpC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,MAAM,qBAAqB,OAAO,EAAE,CAAC,CAAC;YAE3E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3D,IAAI,OAAO,EAAE,CAAC;oBACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC1B,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAQ,EAAE,OAAe,EAAE,SAAiB;QAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,uBAAuB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAE3C,uBAAuB;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhE,iFAAiF;QACjF,2DAA2D;QAC3D,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC;YACzD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;QAE/B,uCAAuC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAEzD,OAAO;YACL,aAAa,EAAE,cAAc;YAC7B,KAAK;YACL,IAAI;YACJ,OAAO,EAAE,QAAQ,OAAO,aAAa,SAAS,EAAE;YAChD,aAAa,EAAE,SAAS,EAAE,uDAAuD;YACjF,eAAe,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;SAC1E,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAAY;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,CAAC;YAED,0CAA0C;YAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAC,kBAAkB;gBACtD,IAAI,GAAG,KAAK,MAAM;oBAAE,SAAS,CAAC,aAAa;gBAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACpC,IAAI,IAAI;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,IAAI;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,OAAY;QACzC,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAE,EAAE;YAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO;YAEpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACnB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnE,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACnC,IAAI,GAAG;4BAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,GAAuB;QAC3C,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC7E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5E,IAAI,SAAS,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,OAAO,SAAS,CAAC,iBAAiB,CAAC;YACrC,CAAC;YAED,2BAA2B;YAC3B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC;YACxE,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,UAAU,GAAG,CAAC;QACtD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,yBAAyB;oBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC1E,OAAO,CAAC,IAAI,CAAC,6BAA6B,KAAK,OAAO,CAAC,CAAC;oBACxD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzD,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,KAAK,UAAU,GAAG,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,6BAA6B,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC/D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,WAAiB;QACrC,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,8CAA8C,IAAI,UAAU,IAAI,CAAC,SAAS,MAAM,CAAC;YAE7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEjE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAClD,OAAO;oBACL,UAAU,EAAE,KAAK;oBACjB,YAAY,EAAE,IAAI,IAAI,EAAE;oBACxB,OAAO,EAAE,EAAE;iBACZ,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAElD,OAAO;gBACL,UAAU,EAAE,YAAY,GAAG,WAAW;gBACtC,YAAY;gBACZ,OAAO,EAAE,YAAY,GAAG,WAAW;oBACjC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,eAAe,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;oBACtE,CAAC,CAAC,EAAE;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,IAAI,IAAI,EAAE;gBACxB,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,wCAAwC;QACxC,4BAA4B;QAC5B,yCAAyC;QACzC,+CAA+C;QAC/C,8CAA8C;QAC9C,EAAE;QACF,kEAAkE;QAClE,wDAAwD;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"ecfr.js","sourceRoot":"","sources":["../../../src/ingest/adapters/ecfr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * FFIEC Adapter - Seed-based for v1.1
3
+ * TODO: Implement PDF scraping for automated updates
4
+ *
5
+ * Source: FFIEC IT Examination Handbook
6
+ * URL: https://www.ffiec.gov/examination.htm
7
+ */
8
+ import { SourceAdapter, RegulationMetadata, Section, Definition, UpdateStatus } from '../framework.js';
9
+ /**
10
+ * Seed-based adapter for FFIEC Guidelines
11
+ *
12
+ * Future enhancement: Implement PDF scraping from ffiec.gov
13
+ * The IT Examination Handbook is published as a collection of PDF booklets
14
+ */
15
+ export declare class FfiecAdapter implements SourceAdapter {
16
+ private seedPath;
17
+ constructor();
18
+ /**
19
+ * Fetch regulation metadata from seed file
20
+ */
21
+ fetchMetadata(): Promise<RegulationMetadata>;
22
+ /**
23
+ * Fetch sections from seed file
24
+ * Returns all sections in a single batch
25
+ */
26
+ fetchSections(): AsyncGenerator<Section[]>;
27
+ /**
28
+ * Extract definitions (not implemented for seed-based adapter)
29
+ * Future: Extract from PDF glossary sections
30
+ */
31
+ extractDefinitions(): Promise<Definition[]>;
32
+ /**
33
+ * Check for updates (not implemented for seed-based adapter)
34
+ * Future: Check PDF publication dates on ffiec.gov
35
+ */
36
+ checkForUpdates(lastFetched: Date): Promise<UpdateStatus>;
37
+ }
38
+ /**
39
+ * Factory function to create FFIEC adapter
40
+ */
41
+ export declare function createFfiecAdapter(): FfiecAdapter;
42
+ //# sourceMappingURL=ffiec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffiec.d.ts","sourceRoot":"","sources":["../../../src/ingest/adapters/ffiec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQvG;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,QAAQ,CAAS;;IAMzB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IASlD;;;OAGG;IACI,aAAa,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;IAKjD;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIjD;;;OAGG;IACG,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;CAOhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * FFIEC Adapter - Seed-based for v1.1
3
+ * TODO: Implement PDF scraping for automated updates
4
+ *
5
+ * Source: FFIEC IT Examination Handbook
6
+ * URL: https://www.ffiec.gov/examination.htm
7
+ */
8
+ import { readFileSync } from 'fs';
9
+ import { join, dirname } from 'path';
10
+ import { fileURLToPath } from 'url';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ /**
14
+ * Seed-based adapter for FFIEC Guidelines
15
+ *
16
+ * Future enhancement: Implement PDF scraping from ffiec.gov
17
+ * The IT Examination Handbook is published as a collection of PDF booklets
18
+ */
19
+ export class FfiecAdapter {
20
+ seedPath;
21
+ constructor() {
22
+ this.seedPath = join(__dirname, '../../../data/seed/ffiec.json');
23
+ }
24
+ /**
25
+ * Fetch regulation metadata from seed file
26
+ */
27
+ async fetchMetadata() {
28
+ const seed = JSON.parse(readFileSync(this.seedPath, 'utf-8'));
29
+ return {
30
+ ...seed.regulation,
31
+ source_url: 'https://www.ffiec.gov/examination.htm',
32
+ last_amended: seed.regulation.effective_date
33
+ };
34
+ }
35
+ /**
36
+ * Fetch sections from seed file
37
+ * Returns all sections in a single batch
38
+ */
39
+ async *fetchSections() {
40
+ const seed = JSON.parse(readFileSync(this.seedPath, 'utf-8'));
41
+ yield seed.sections;
42
+ }
43
+ /**
44
+ * Extract definitions (not implemented for seed-based adapter)
45
+ * Future: Extract from PDF glossary sections
46
+ */
47
+ async extractDefinitions() {
48
+ return [];
49
+ }
50
+ /**
51
+ * Check for updates (not implemented for seed-based adapter)
52
+ * Future: Check PDF publication dates on ffiec.gov
53
+ */
54
+ async checkForUpdates(lastFetched) {
55
+ return {
56
+ hasChanges: false,
57
+ lastModified: new Date(),
58
+ changes: []
59
+ };
60
+ }
61
+ }
62
+ /**
63
+ * Factory function to create FFIEC adapter
64
+ */
65
+ export function createFfiecAdapter() {
66
+ return new FfiecAdapter();
67
+ }
68
+ //# sourceMappingURL=ffiec.js.map