export const REGULATORY_CHUNK_SCHEMA_VERSION = 2 as const; export const REGULATORY_FINDING_QUERY_SCHEMA_VERSION = 1 as const; export type RegulatoryDocumentSchemaVersion = 1 | 2; export type RegulatoryControlTheme = 'organizational' | 'people' | 'physical' | 'technological'; export type RegulatorySectionKind = 'attributes' | 'control' | 'purpose' | 'guidance' | 'other-information'; export type RegulatoryRetrievalRole = 'semantic' | 'reference'; export interface RegulatoryControlDocument { schemaVersion: RegulatoryDocumentSchemaVersion; corpusId: string; corpusVersion: string; documentId: string; framework: string; frameworkVersion: string; controlId: string; language: string; title: string; text: string; sourceUri?: string; annexAControlId?: string; controlTheme?: RegulatoryControlTheme; sourceStandard?: 'ISO/IEC 27001' | 'ISO/IEC 27002'; sourceEdition?: string; nationalEdition?: string; sectionKind?: RegulatorySectionKind; sourcePageStart?: number; sourcePageEnd?: number; retrievalRole?: RegulatoryRetrievalRole; parserVersion?: string; sourceSha256?: string; } export interface RegulatoryCorpusSource { standard: 'ISO/IEC 27001' | 'ISO/IEC 27002'; sourceEdition: string; nationalEdition: string; sha256: string; pageCount: number; } export interface RegulatoryCorpusV2 { schemaVersion: 2; corpusId: string; corpusVersion: string; language: string; parserVersion: string; generatedAt: string; sources: RegulatoryCorpusSource[]; documents: RegulatoryControlDocument[]; } export interface RegulatoryChunk { schemaVersion: RegulatoryDocumentSchemaVersion; corpusId: string; corpusVersion: string; documentId: string; framework: string; frameworkVersion: string; controlId: string; chunkId: string; chunkIndex: number; language: string; title: string; text: string; textSha256: string; sourceUri?: string; annexAControlId?: string; controlTheme?: RegulatoryControlTheme; sourceStandard?: 'ISO/IEC 27001' | 'ISO/IEC 27002'; sourceEdition?: string; nationalEdition?: string; sectionKind?: RegulatorySectionKind; sourcePageStart?: number; sourcePageEnd?: number; retrievalRole?: RegulatoryRetrievalRole; parserVersion?: string; sourceSha256?: string; } export interface RegulatoryRetrievalFilters { corpusId?: string; corpusVersion?: string; framework?: string; frameworkVersion?: string; controlId?: string; language?: string; sourceStandard?: string; sectionKind?: RegulatorySectionKind; retrievalRole?: RegulatoryRetrievalRole; } export interface RegulatoryRetrievalRequest { query: string; limit: number; filters?: RegulatoryRetrievalFilters; } export interface RegulatoryRetrievalCandidate { score: number; chunk: RegulatoryChunk; } export interface RegulatoryRetriever { retrieve(request: RegulatoryRetrievalRequest): Promise; } export interface RegulatoryFindingQuery { schemaVersion: 1; query: string; specificity: 'rule' | 'topic'; publicTool?: string; publicRuleId?: string; publicTopics: string[]; } export interface RegulatoryReranker { rerank(query: string, candidates: RegulatoryRetrievalCandidate[]): Promise; }