@oscharko-dev/keiko-contracts 0.2.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.
- package/dist/.tsbuildinfo +1 -0
- package/dist/bff-wire.d.ts +661 -0
- package/dist/bff-wire.d.ts.map +1 -0
- package/dist/bff-wire.js +102 -0
- package/dist/bug-investigation-events.d.ts +92 -0
- package/dist/bug-investigation-events.d.ts.map +1 -0
- package/dist/bug-investigation-events.js +18 -0
- package/dist/coding-context.d.ts +76 -0
- package/dist/coding-context.d.ts.map +1 -0
- package/dist/coding-context.js +158 -0
- package/dist/connected-context.d.ts +174 -0
- package/dist/connected-context.d.ts.map +1 -0
- package/dist/connected-context.js +636 -0
- package/dist/conversation-budget.d.ts +37 -0
- package/dist/conversation-budget.d.ts.map +1 -0
- package/dist/conversation-budget.js +97 -0
- package/dist/editor-agent.d.ts +131 -0
- package/dist/editor-agent.d.ts.map +1 -0
- package/dist/editor-agent.js +197 -0
- package/dist/editor-completion.d.ts +62 -0
- package/dist/editor-completion.d.ts.map +1 -0
- package/dist/editor-completion.js +147 -0
- package/dist/editor-dirty-close.d.ts +17 -0
- package/dist/editor-dirty-close.d.ts.map +1 -0
- package/dist/editor-dirty-close.js +8 -0
- package/dist/editor-hot-exit.d.ts +18 -0
- package/dist/editor-hot-exit.d.ts.map +1 -0
- package/dist/editor-hot-exit.js +42 -0
- package/dist/editor-inline-completion.d.ts +70 -0
- package/dist/editor-inline-completion.d.ts.map +1 -0
- package/dist/editor-inline-completion.js +215 -0
- package/dist/editor-layout.d.ts +105 -0
- package/dist/editor-layout.d.ts.map +1 -0
- package/dist/editor-layout.js +479 -0
- package/dist/editor-patch-apply.d.ts +77 -0
- package/dist/editor-patch-apply.d.ts.map +1 -0
- package/dist/editor-patch-apply.js +122 -0
- package/dist/editor-session.d.ts +31 -0
- package/dist/editor-session.d.ts.map +1 -0
- package/dist/editor-session.js +75 -0
- package/dist/editor-test-generation.d.ts +104 -0
- package/dist/editor-test-generation.d.ts.map +1 -0
- package/dist/editor-test-generation.js +211 -0
- package/dist/evaluations.d.ts +75 -0
- package/dist/evaluations.d.ts.map +1 -0
- package/dist/evaluations.js +16 -0
- package/dist/evidence.d.ts +297 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +9 -0
- package/dist/gateway.d.ts +129 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +66 -0
- package/dist/harness.d.ts +274 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +38 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/language-service.d.ts +145 -0
- package/dist/language-service.d.ts.map +1 -0
- package/dist/language-service.js +161 -0
- package/dist/local-knowledge-large-document-validation.d.ts +7 -0
- package/dist/local-knowledge-large-document-validation.d.ts.map +1 -0
- package/dist/local-knowledge-large-document-validation.js +161 -0
- package/dist/local-knowledge-large-document.d.ts +113 -0
- package/dist/local-knowledge-large-document.d.ts.map +1 -0
- package/dist/local-knowledge-large-document.js +142 -0
- package/dist/local-knowledge-paths.d.ts +3 -0
- package/dist/local-knowledge-paths.d.ts.map +1 -0
- package/dist/local-knowledge-paths.js +65 -0
- package/dist/local-knowledge-records.d.ts +190 -0
- package/dist/local-knowledge-records.d.ts.map +1 -0
- package/dist/local-knowledge-records.js +36 -0
- package/dist/local-knowledge-schema-validation.d.ts +19 -0
- package/dist/local-knowledge-schema-validation.d.ts.map +1 -0
- package/dist/local-knowledge-schema-validation.js +115 -0
- package/dist/local-knowledge-schema.d.ts +14 -0
- package/dist/local-knowledge-schema.d.ts.map +1 -0
- package/dist/local-knowledge-schema.js +715 -0
- package/dist/local-knowledge-validation.d.ts +20 -0
- package/dist/local-knowledge-validation.d.ts.map +1 -0
- package/dist/local-knowledge-validation.js +487 -0
- package/dist/local-knowledge.d.ts +158 -0
- package/dist/local-knowledge.d.ts.map +1 -0
- package/dist/local-knowledge.js +63 -0
- package/dist/memory-audit-events.d.ts +73 -0
- package/dist/memory-audit-events.d.ts.map +1 -0
- package/dist/memory-audit-events.js +44 -0
- package/dist/memory-audit-validation.d.ts +4 -0
- package/dist/memory-audit-validation.d.ts.map +1 -0
- package/dist/memory-audit-validation.js +151 -0
- package/dist/memory-barrel.d.ts +15 -0
- package/dist/memory-barrel.d.ts.map +1 -0
- package/dist/memory-barrel.js +20 -0
- package/dist/memory-internal.d.ts +26 -0
- package/dist/memory-internal.d.ts.map +1 -0
- package/dist/memory-internal.js +104 -0
- package/dist/memory-operations-validation.d.ts +12 -0
- package/dist/memory-operations-validation.d.ts.map +1 -0
- package/dist/memory-operations-validation.js +267 -0
- package/dist/memory-operations.d.ts +156 -0
- package/dist/memory-operations.d.ts.map +1 -0
- package/dist/memory-operations.js +29 -0
- package/dist/memory-record-validation.d.ts +10 -0
- package/dist/memory-record-validation.d.ts.map +1 -0
- package/dist/memory-record-validation.js +101 -0
- package/dist/memory-records.d.ts +66 -0
- package/dist/memory-records.d.ts.map +1 -0
- package/dist/memory-records.js +22 -0
- package/dist/memory-retrieval-validation.d.ts +6 -0
- package/dist/memory-retrieval-validation.d.ts.map +1 -0
- package/dist/memory-retrieval-validation.js +108 -0
- package/dist/memory-validation.d.ts +31 -0
- package/dist/memory-validation.d.ts.map +1 -0
- package/dist/memory-validation.js +318 -0
- package/dist/memory-workflow-port.d.ts +26 -0
- package/dist/memory-workflow-port.d.ts.map +1 -0
- package/dist/memory-workflow-port.js +13 -0
- package/dist/memory.d.ts +81 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +104 -0
- package/dist/prompt-enhancer-analyzer.d.ts +7 -0
- package/dist/prompt-enhancer-analyzer.d.ts.map +1 -0
- package/dist/prompt-enhancer-analyzer.js +745 -0
- package/dist/prompt-enhancer-bff.d.ts +67 -0
- package/dist/prompt-enhancer-bff.d.ts.map +1 -0
- package/dist/prompt-enhancer-bff.js +156 -0
- package/dist/prompt-enhancer-critic.d.ts +46 -0
- package/dist/prompt-enhancer-critic.d.ts.map +1 -0
- package/dist/prompt-enhancer-critic.js +35 -0
- package/dist/prompt-enhancer-grounding.d.ts +19 -0
- package/dist/prompt-enhancer-grounding.d.ts.map +1 -0
- package/dist/prompt-enhancer-grounding.js +235 -0
- package/dist/prompt-enhancer-safety.d.ts +66 -0
- package/dist/prompt-enhancer-safety.d.ts.map +1 -0
- package/dist/prompt-enhancer-safety.js +446 -0
- package/dist/prompt-enhancer-validation.d.ts +28 -0
- package/dist/prompt-enhancer-validation.d.ts.map +1 -0
- package/dist/prompt-enhancer-validation.js +931 -0
- package/dist/prompt-enhancer.d.ts +184 -0
- package/dist/prompt-enhancer.d.ts.map +1 -0
- package/dist/prompt-enhancer.js +350 -0
- package/dist/qualityIntelligence/assertNever.d.ts +2 -0
- package/dist/qualityIntelligence/assertNever.d.ts.map +1 -0
- package/dist/qualityIntelligence/assertNever.js +7 -0
- package/dist/qualityIntelligence/auditSummary.d.ts +25 -0
- package/dist/qualityIntelligence/auditSummary.d.ts.map +1 -0
- package/dist/qualityIntelligence/auditSummary.js +7 -0
- package/dist/qualityIntelligence/bffWire.d.ts +356 -0
- package/dist/qualityIntelligence/bffWire.d.ts.map +1 -0
- package/dist/qualityIntelligence/bffWire.js +22 -0
- package/dist/qualityIntelligence/coverageMap.d.ts +21 -0
- package/dist/qualityIntelligence/coverageMap.d.ts.map +1 -0
- package/dist/qualityIntelligence/coverageMap.js +29 -0
- package/dist/qualityIntelligence/editableRevision.d.ts +21 -0
- package/dist/qualityIntelligence/editableRevision.d.ts.map +1 -0
- package/dist/qualityIntelligence/editableRevision.js +8 -0
- package/dist/qualityIntelligence/evidenceAtom.d.ts +35 -0
- package/dist/qualityIntelligence/evidenceAtom.d.ts.map +1 -0
- package/dist/qualityIntelligence/evidenceAtom.js +29 -0
- package/dist/qualityIntelligence/exportBundle.d.ts +28 -0
- package/dist/qualityIntelligence/exportBundle.d.ts.map +1 -0
- package/dist/qualityIntelligence/exportBundle.js +46 -0
- package/dist/qualityIntelligence/handoffEnvelope.d.ts +23 -0
- package/dist/qualityIntelligence/handoffEnvelope.d.ts.map +1 -0
- package/dist/qualityIntelligence/handoffEnvelope.js +8 -0
- package/dist/qualityIntelligence/ids.d.ts +58 -0
- package/dist/qualityIntelligence/ids.d.ts.map +1 -0
- package/dist/qualityIntelligence/ids.js +93 -0
- package/dist/qualityIntelligence/index.d.ts +29 -0
- package/dist/qualityIntelligence/index.d.ts.map +1 -0
- package/dist/qualityIntelligence/index.js +20 -0
- package/dist/qualityIntelligence/reviewRecord.d.ts +19 -0
- package/dist/qualityIntelligence/reviewRecord.d.ts.map +1 -0
- package/dist/qualityIntelligence/reviewRecord.js +20 -0
- package/dist/qualityIntelligence/runPlanAndEvents.d.ts +84 -0
- package/dist/qualityIntelligence/runPlanAndEvents.d.ts.map +1 -0
- package/dist/qualityIntelligence/runPlanAndEvents.js +51 -0
- package/dist/qualityIntelligence/sourceEnvelope.d.ts +77 -0
- package/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -0
- package/dist/qualityIntelligence/sourceEnvelope.js +118 -0
- package/dist/qualityIntelligence/testCaseCandidate.d.ts +21 -0
- package/dist/qualityIntelligence/testCaseCandidate.d.ts.map +1 -0
- package/dist/qualityIntelligence/testCaseCandidate.js +21 -0
- package/dist/qualityIntelligence/testQualityRubric.d.ts +17 -0
- package/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -0
- package/dist/qualityIntelligence/testQualityRubric.js +32 -0
- package/dist/qualityIntelligence/validationFinding.d.ts +48 -0
- package/dist/qualityIntelligence/validationFinding.d.ts.map +1 -0
- package/dist/qualityIntelligence/validationFinding.js +36 -0
- package/dist/relationships-validation.d.ts +13 -0
- package/dist/relationships-validation.d.ts.map +1 -0
- package/dist/relationships-validation.js +422 -0
- package/dist/relationships.d.ts +79 -0
- package/dist/relationships.d.ts.map +1 -0
- package/dist/relationships.js +307 -0
- package/dist/text-safety.d.ts +7 -0
- package/dist/text-safety.d.ts.map +1 -0
- package/dist/text-safety.js +58 -0
- package/dist/tools.d.ts +153 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +118 -0
- package/dist/unit-test-events.d.ts +87 -0
- package/dist/unit-test-events.d.ts.map +1 -0
- package/dist/unit-test-events.js +14 -0
- package/dist/verification-summary.d.ts +38 -0
- package/dist/verification-summary.d.ts.map +1 -0
- package/dist/verification-summary.js +5 -0
- package/dist/verification.d.ts +64 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +13 -0
- package/dist/workflow-descriptor.d.ts +21 -0
- package/dist/workflow-descriptor.d.ts.map +1 -0
- package/dist/workflow-descriptor.js +8 -0
- package/dist/workflow-handoff.d.ts +69 -0
- package/dist/workflow-handoff.d.ts.map +1 -0
- package/dist/workflow-handoff.js +381 -0
- package/dist/workspace-descriptors.d.ts +21 -0
- package/dist/workspace-descriptors.d.ts.map +1 -0
- package/dist/workspace-descriptors.js +180 -0
- package/dist/workspace-ui.d.ts +119 -0
- package/dist/workspace-ui.d.ts.map +1 -0
- package/dist/workspace-ui.js +105 -0
- package/dist/workspace.d.ts +104 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +27 -0
- package/package.json +71 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export declare const LANGUAGE_SERVICE_SCHEMA_VERSION: "1";
|
|
2
|
+
export type LanguageServiceOperation = "diagnostics" | "completion" | "hover" | "symbols" | "formatting";
|
|
3
|
+
export declare const LANGUAGE_SERVICE_OPERATIONS: readonly LanguageServiceOperation[];
|
|
4
|
+
export type LanguageServiceErrorCode = "INVALID_REQUEST" | "UNSUPPORTED_LANGUAGE" | "UNSUPPORTED_OPERATION" | "DOCUMENT_TOO_LARGE" | "DENIED" | "CANCELLED" | "TIMED_OUT";
|
|
5
|
+
export declare const LANGUAGE_SERVICE_ERROR_CODES: readonly LanguageServiceErrorCode[];
|
|
6
|
+
export interface LanguagePosition {
|
|
7
|
+
readonly line: number;
|
|
8
|
+
readonly character: number;
|
|
9
|
+
}
|
|
10
|
+
export interface LanguageRange {
|
|
11
|
+
readonly start: LanguagePosition;
|
|
12
|
+
readonly end: LanguagePosition;
|
|
13
|
+
}
|
|
14
|
+
export interface LanguageDocumentOverlay {
|
|
15
|
+
readonly path: string;
|
|
16
|
+
readonly languageId: string;
|
|
17
|
+
readonly text: string;
|
|
18
|
+
}
|
|
19
|
+
export type LanguageDiagnosticSeverity = "error" | "warning" | "info" | "hint";
|
|
20
|
+
export interface LanguageDiagnostic {
|
|
21
|
+
readonly range: LanguageRange;
|
|
22
|
+
readonly severity: LanguageDiagnosticSeverity;
|
|
23
|
+
readonly message: string;
|
|
24
|
+
readonly source: string;
|
|
25
|
+
readonly code?: string;
|
|
26
|
+
}
|
|
27
|
+
export type LanguageCompletionItemKind = "text" | "method" | "function" | "constructor" | "field" | "variable" | "class" | "interface" | "module" | "property" | "value" | "enum" | "keyword" | "snippet" | "constant" | "struct" | "typeParameter";
|
|
28
|
+
export interface LanguageCompletionItem {
|
|
29
|
+
readonly label: string;
|
|
30
|
+
readonly kind: LanguageCompletionItemKind;
|
|
31
|
+
readonly detail?: string;
|
|
32
|
+
readonly documentation?: string;
|
|
33
|
+
readonly insertText?: string;
|
|
34
|
+
readonly sortText?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface LanguageCompletionResult {
|
|
37
|
+
readonly items: readonly LanguageCompletionItem[];
|
|
38
|
+
readonly isIncomplete: boolean;
|
|
39
|
+
readonly truncated: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface LanguageDiagnosticsResult {
|
|
42
|
+
readonly diagnostics: readonly LanguageDiagnostic[];
|
|
43
|
+
readonly truncated: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface LanguageHoverResult {
|
|
46
|
+
readonly contents: string | null;
|
|
47
|
+
readonly range?: LanguageRange;
|
|
48
|
+
}
|
|
49
|
+
export type LanguageSymbolKind = "file" | "module" | "namespace" | "class" | "method" | "property" | "field" | "constructor" | "enum" | "interface" | "function" | "variable" | "constant" | "struct" | "enumMember" | "typeParameter";
|
|
50
|
+
export interface LanguageDocumentSymbol {
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly kind: LanguageSymbolKind;
|
|
53
|
+
readonly range: LanguageRange;
|
|
54
|
+
readonly detail?: string;
|
|
55
|
+
readonly containerName?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface LanguageSymbolResult {
|
|
58
|
+
readonly symbols: readonly LanguageDocumentSymbol[];
|
|
59
|
+
readonly truncated: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface LanguageTextEdit {
|
|
62
|
+
readonly range: LanguageRange;
|
|
63
|
+
readonly newText: string;
|
|
64
|
+
}
|
|
65
|
+
export declare const MAX_LANGUAGE_FORMATTING_TAB_SIZE: 16;
|
|
66
|
+
export interface LanguageFormattingOptions {
|
|
67
|
+
readonly tabSize?: number;
|
|
68
|
+
readonly insertSpaces?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface LanguageFormattingResult {
|
|
71
|
+
readonly edits: readonly LanguageTextEdit[];
|
|
72
|
+
readonly truncated: boolean;
|
|
73
|
+
}
|
|
74
|
+
export type LanguageProviderAvailability = "available" | "unavailable";
|
|
75
|
+
export interface LanguageProviderDescriptor {
|
|
76
|
+
readonly id: string;
|
|
77
|
+
readonly languages: readonly string[];
|
|
78
|
+
readonly operations: readonly LanguageServiceOperation[];
|
|
79
|
+
readonly availability: LanguageProviderAvailability;
|
|
80
|
+
readonly unavailableReason?: string | undefined;
|
|
81
|
+
}
|
|
82
|
+
export interface LanguageServiceCapabilities {
|
|
83
|
+
readonly schemaVersion: typeof LANGUAGE_SERVICE_SCHEMA_VERSION;
|
|
84
|
+
readonly providers: readonly LanguageProviderDescriptor[];
|
|
85
|
+
}
|
|
86
|
+
export interface LanguageServiceLimits {
|
|
87
|
+
readonly maxDocumentBytes: number;
|
|
88
|
+
readonly maxCompletionItems: number;
|
|
89
|
+
readonly maxDiagnostics: number;
|
|
90
|
+
readonly maxSymbols: number;
|
|
91
|
+
readonly maxFormattingEdits: number;
|
|
92
|
+
readonly maxHoverChars: number;
|
|
93
|
+
readonly maxLabelChars: number;
|
|
94
|
+
readonly maxDetailChars: number;
|
|
95
|
+
readonly maxDocumentationChars: number;
|
|
96
|
+
readonly maxMessageChars: number;
|
|
97
|
+
readonly maxWorkspaceReadBytes: number;
|
|
98
|
+
readonly maxWorkspaceReadFileBytes: number;
|
|
99
|
+
readonly maxWorkspaceReadFiles: number;
|
|
100
|
+
readonly deadlineMs: number;
|
|
101
|
+
}
|
|
102
|
+
export declare const DEFAULT_LANGUAGE_SERVICE_LIMITS: LanguageServiceLimits;
|
|
103
|
+
export interface LanguageDiagnosticsRequest {
|
|
104
|
+
readonly operation: "diagnostics";
|
|
105
|
+
readonly root: string;
|
|
106
|
+
readonly document: LanguageDocumentOverlay;
|
|
107
|
+
}
|
|
108
|
+
export interface LanguageCompletionRequest {
|
|
109
|
+
readonly operation: "completion";
|
|
110
|
+
readonly root: string;
|
|
111
|
+
readonly document: LanguageDocumentOverlay;
|
|
112
|
+
readonly position: LanguagePosition;
|
|
113
|
+
}
|
|
114
|
+
export interface LanguageHoverRequest {
|
|
115
|
+
readonly operation: "hover";
|
|
116
|
+
readonly root: string;
|
|
117
|
+
readonly document: LanguageDocumentOverlay;
|
|
118
|
+
readonly position: LanguagePosition;
|
|
119
|
+
}
|
|
120
|
+
export interface LanguageSymbolsRequest {
|
|
121
|
+
readonly operation: "symbols";
|
|
122
|
+
readonly root: string;
|
|
123
|
+
readonly document: LanguageDocumentOverlay;
|
|
124
|
+
}
|
|
125
|
+
export interface LanguageFormattingRequest {
|
|
126
|
+
readonly operation: "formatting";
|
|
127
|
+
readonly root: string;
|
|
128
|
+
readonly document: LanguageDocumentOverlay;
|
|
129
|
+
readonly options?: LanguageFormattingOptions;
|
|
130
|
+
}
|
|
131
|
+
export type LanguageServiceRequest = LanguageDiagnosticsRequest | LanguageCompletionRequest | LanguageHoverRequest | LanguageSymbolsRequest | LanguageFormattingRequest;
|
|
132
|
+
export interface LanguageServiceParseOk<T> {
|
|
133
|
+
readonly ok: true;
|
|
134
|
+
readonly value: T;
|
|
135
|
+
}
|
|
136
|
+
export interface LanguageServiceParseFail {
|
|
137
|
+
readonly ok: false;
|
|
138
|
+
readonly errors: readonly string[];
|
|
139
|
+
}
|
|
140
|
+
export type LanguageServiceParse<T> = LanguageServiceParseOk<T> | LanguageServiceParseFail;
|
|
141
|
+
export declare function isLanguagePosition(value: unknown): value is LanguagePosition;
|
|
142
|
+
export declare function isLanguageDocumentOverlay(value: unknown): value is LanguageDocumentOverlay;
|
|
143
|
+
export declare function isLanguageFormattingOptions(value: unknown): value is LanguageFormattingOptions;
|
|
144
|
+
export declare function parseLanguageServiceRequest(value: unknown): LanguageServiceParse<LanguageServiceRequest>;
|
|
145
|
+
//# sourceMappingURL=language-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-service.d.ts","sourceRoot":"","sources":["../src/language-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// Deterministic language-intelligence contracts (Issue #1198, Epic #1189, ADR-0042 D4). These are
|
|
2
|
+
// the governed, model-free request/response shapes for editor completion, diagnostics, hover, and
|
|
3
|
+
// document symbols. The deterministic language service is a keiko-server module and the single
|
|
4
|
+
// source of truth for these features; the in-browser Monaco worker is disabled for governed
|
|
5
|
+
// features (ADR-0042 D4).
|
|
6
|
+
//
|
|
7
|
+
// PROVIDER-PLUGGABLE BY DESIGN (Review Addendum 2): the contract names no concrete language. A
|
|
8
|
+
// provider declares which `languages` and `operations` it serves (LanguageProviderDescriptor), so
|
|
9
|
+
// adding a new language provider — TypeScript/JavaScript first, then the staged LSP expansion for
|
|
10
|
+
// Java/Python/Rust/Go (#1213) — requires no change to these shapes.
|
|
11
|
+
//
|
|
12
|
+
// This module owns the language-service contract namespace for the epic. It is kept disjoint from
|
|
13
|
+
// the editor-session namespace (#1197): no name overlap, no shared types. Unlike the content-free
|
|
14
|
+
// editor-session metadata, a language request necessarily carries the in-editor buffer text so
|
|
15
|
+
// diagnostics can reflect unsaved edits; the BFF redacts and caps every response before it reaches
|
|
16
|
+
// the browser and never logs the buffer.
|
|
17
|
+
//
|
|
18
|
+
// Leaf-package rules (ADR-0019): pure types and frozen const tables plus throw-free validators
|
|
19
|
+
// only. No filesystem, no clock, no crypto, no randomness, and no imports of other
|
|
20
|
+
// `@oscharko-dev/keiko-*` packages.
|
|
21
|
+
// Schema version for the language-service envelope. Bump as a new string member when the shape
|
|
22
|
+
// changes incompatibly; consumers pin against the literal to detect skew.
|
|
23
|
+
export const LANGUAGE_SERVICE_SCHEMA_VERSION = "1";
|
|
24
|
+
export const LANGUAGE_SERVICE_OPERATIONS = [
|
|
25
|
+
"diagnostics",
|
|
26
|
+
"completion",
|
|
27
|
+
"hover",
|
|
28
|
+
"symbols",
|
|
29
|
+
"formatting",
|
|
30
|
+
];
|
|
31
|
+
export const LANGUAGE_SERVICE_ERROR_CODES = [
|
|
32
|
+
"INVALID_REQUEST",
|
|
33
|
+
"UNSUPPORTED_LANGUAGE",
|
|
34
|
+
"UNSUPPORTED_OPERATION",
|
|
35
|
+
"DOCUMENT_TOO_LARGE",
|
|
36
|
+
"DENIED",
|
|
37
|
+
"CANCELLED",
|
|
38
|
+
"TIMED_OUT",
|
|
39
|
+
];
|
|
40
|
+
// Caller-supplied formatting preferences (Issue #1201). They mirror the editor's indentation
|
|
41
|
+
// settings so the deterministic provider reflows to the active configuration; both fields are
|
|
42
|
+
// optional and the provider falls back to its language default when either is absent. The tab-size
|
|
43
|
+
// ceiling is deliberately small: Monaco's UI emits normal editor widths, while the BFF boundary must
|
|
44
|
+
// reject pathological values before they can amplify provider CPU/memory work.
|
|
45
|
+
export const MAX_LANGUAGE_FORMATTING_TAB_SIZE = 16;
|
|
46
|
+
export const DEFAULT_LANGUAGE_SERVICE_LIMITS = {
|
|
47
|
+
maxDocumentBytes: 1_000_000,
|
|
48
|
+
maxCompletionItems: 256,
|
|
49
|
+
maxDiagnostics: 512,
|
|
50
|
+
maxSymbols: 512,
|
|
51
|
+
maxFormattingEdits: 4_096,
|
|
52
|
+
maxHoverChars: 4_096,
|
|
53
|
+
maxLabelChars: 256,
|
|
54
|
+
maxDetailChars: 1_024,
|
|
55
|
+
maxDocumentationChars: 4_096,
|
|
56
|
+
maxMessageChars: 2_048,
|
|
57
|
+
maxWorkspaceReadBytes: 4_000_000,
|
|
58
|
+
maxWorkspaceReadFileBytes: 1_000_000,
|
|
59
|
+
maxWorkspaceReadFiles: 256,
|
|
60
|
+
deadlineMs: 2_000,
|
|
61
|
+
};
|
|
62
|
+
function isRecord(value) {
|
|
63
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
64
|
+
}
|
|
65
|
+
function isNonEmptyString(value) {
|
|
66
|
+
return typeof value === "string" && value.length > 0;
|
|
67
|
+
}
|
|
68
|
+
// A zero-based offset: a non-negative integer. Fractional or negative offsets can never index a
|
|
69
|
+
// source buffer, so they are rejected up front.
|
|
70
|
+
function isNonNegativeInteger(value) {
|
|
71
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
72
|
+
}
|
|
73
|
+
export function isLanguagePosition(value) {
|
|
74
|
+
return (isRecord(value) && isNonNegativeInteger(value.line) && isNonNegativeInteger(value.character));
|
|
75
|
+
}
|
|
76
|
+
export function isLanguageDocumentOverlay(value) {
|
|
77
|
+
return (isRecord(value) &&
|
|
78
|
+
isNonEmptyString(value.path) &&
|
|
79
|
+
isNonEmptyString(value.languageId) &&
|
|
80
|
+
typeof value.text === "string");
|
|
81
|
+
}
|
|
82
|
+
// A tab width is a bounded positive integer column count; zero/fractional/pathological widths cannot
|
|
83
|
+
// describe a normal editor indentation setting and are rejected at the trust boundary.
|
|
84
|
+
function isTabSize(value) {
|
|
85
|
+
return (typeof value === "number" &&
|
|
86
|
+
Number.isInteger(value) &&
|
|
87
|
+
value >= 1 &&
|
|
88
|
+
value <= MAX_LANGUAGE_FORMATTING_TAB_SIZE);
|
|
89
|
+
}
|
|
90
|
+
// Formatting options are optional; an absent block is valid (the provider uses its default). When
|
|
91
|
+
// present, each declared field must be well-typed — a malformed `tabSize`/`insertSpaces` is rejected
|
|
92
|
+
// rather than silently dropped, so a hostile client cannot smuggle an unexpected shape past the BFF.
|
|
93
|
+
export function isLanguageFormattingOptions(value) {
|
|
94
|
+
if (!isRecord(value)) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (value.tabSize !== undefined && !isTabSize(value.tabSize)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
if (value.insertSpaces !== undefined && typeof value.insertSpaces !== "boolean") {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
function isLanguageServiceOperation(value) {
|
|
106
|
+
return (typeof value === "string" && LANGUAGE_SERVICE_OPERATIONS.includes(value));
|
|
107
|
+
}
|
|
108
|
+
function collectBaseErrors(value) {
|
|
109
|
+
const errors = [];
|
|
110
|
+
if (!isNonEmptyString(value.root)) {
|
|
111
|
+
errors.push("root must be a non-empty string");
|
|
112
|
+
}
|
|
113
|
+
if (!isLanguageDocumentOverlay(value.document)) {
|
|
114
|
+
errors.push("document must be { path, languageId, text }");
|
|
115
|
+
}
|
|
116
|
+
return errors;
|
|
117
|
+
}
|
|
118
|
+
function needsPosition(operation) {
|
|
119
|
+
return operation === "completion" || operation === "hover";
|
|
120
|
+
}
|
|
121
|
+
// Validates an `unknown` payload into a LanguageServiceRequest, reporting one error per failed
|
|
122
|
+
// invariant. The BFF uses this to reject a malformed request with 400 INVALID_REQUEST.
|
|
123
|
+
export function parseLanguageServiceRequest(value) {
|
|
124
|
+
if (!isRecord(value)) {
|
|
125
|
+
return { ok: false, errors: ["request must be an object"] };
|
|
126
|
+
}
|
|
127
|
+
if (!isLanguageServiceOperation(value.operation)) {
|
|
128
|
+
return {
|
|
129
|
+
ok: false,
|
|
130
|
+
errors: [`operation must be one of: ${LANGUAGE_SERVICE_OPERATIONS.join(", ")}`],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const operation = value.operation;
|
|
134
|
+
const errors = collectBaseErrors(value);
|
|
135
|
+
if (needsPosition(operation) && !isLanguagePosition(value.position)) {
|
|
136
|
+
errors.push("position must be { line, character }");
|
|
137
|
+
}
|
|
138
|
+
if (operation === "formatting" &&
|
|
139
|
+
value.options !== undefined &&
|
|
140
|
+
!isLanguageFormattingOptions(value.options)) {
|
|
141
|
+
errors.push("options must be { tabSize?, insertSpaces? }");
|
|
142
|
+
}
|
|
143
|
+
if (errors.length > 0) {
|
|
144
|
+
return { ok: false, errors };
|
|
145
|
+
}
|
|
146
|
+
return { ok: true, value: assembleRequest(operation, value) };
|
|
147
|
+
}
|
|
148
|
+
// Narrowing already guaranteed by parseLanguageServiceRequest; this assembles the concrete shape.
|
|
149
|
+
function assembleRequest(operation, value) {
|
|
150
|
+
const root = value.root;
|
|
151
|
+
const document = value.document;
|
|
152
|
+
if (operation === "completion" || operation === "hover") {
|
|
153
|
+
return { operation, root, document, position: value.position };
|
|
154
|
+
}
|
|
155
|
+
if (operation === "formatting") {
|
|
156
|
+
return value.options === undefined
|
|
157
|
+
? { operation, root, document }
|
|
158
|
+
: { operation, root, document, options: value.options };
|
|
159
|
+
}
|
|
160
|
+
return { operation, root, document };
|
|
161
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CheckpointFingerprint, ExtractionCheckpointRecord, LargeDocumentResourcePolicy } from "./local-knowledge-large-document.js";
|
|
2
|
+
import type { LocalKnowledgeValidation } from "./local-knowledge-validation.js";
|
|
3
|
+
export declare function validateLargeDocumentResourcePolicy(input: unknown): LocalKnowledgeValidation<LargeDocumentResourcePolicy>;
|
|
4
|
+
export declare function validateExtractionCheckpointRecord(input: unknown): LocalKnowledgeValidation<ExtractionCheckpointRecord>;
|
|
5
|
+
export declare function isSafeQualityWarning(value: unknown): value is string;
|
|
6
|
+
export type { CheckpointFingerprint };
|
|
7
|
+
//# sourceMappingURL=local-knowledge-large-document-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-knowledge-large-document-validation.d.ts","sourceRoot":"","sources":["../src/local-knowledge-large-document-validation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EAErB,0BAA0B,EAG1B,2BAA2B,EAC5B,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AA0ChF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,GACb,wBAAwB,CAAC,2BAA2B,CAAC,CA4BvD;AA0FD,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,wBAAwB,CAAC,0BAA0B,CAAC,CAatD;AAGD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEpE;AAED,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// Pure validators for the bounded large-document ingestion contracts (Epic #1160,
|
|
2
|
+
// Issue #1286). No filesystem, clock, crypto, or randomness; these helpers only inspect the
|
|
3
|
+
// structure of an `unknown` payload and report which invariants failed.
|
|
4
|
+
//
|
|
5
|
+
// Each validator returns the same discriminated `{ ok: true; value } | { ok: false; errors }`
|
|
6
|
+
// shape as the other Local Knowledge validators so callers branch without throwing.
|
|
7
|
+
import { COVERAGE_QUALITIES, EXTRACTION_PHASES, LARGE_DOCUMENT_EXTRACTION_STRATEGIES, } from "./local-knowledge-large-document.js";
|
|
8
|
+
import { isSafeDisplaySummary } from "./local-knowledge-validation.js";
|
|
9
|
+
// ─── Local primitive guards ───────────────────────────────────────────────────
|
|
10
|
+
// Mirror the private guards in local-knowledge-validation.ts. Kept local rather than exported
|
|
11
|
+
// across the module boundary to avoid widening that file's public surface.
|
|
12
|
+
function isRecord(value) {
|
|
13
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
function isFiniteNonNegativeInteger(value) {
|
|
16
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
17
|
+
}
|
|
18
|
+
function isFinitePositiveInteger(value) {
|
|
19
|
+
return typeof value === "number" && Number.isInteger(value) && value > 0;
|
|
20
|
+
}
|
|
21
|
+
function isNonEmptyHex(value) {
|
|
22
|
+
return typeof value === "string" && /^[0-9a-f]+$/i.test(value);
|
|
23
|
+
}
|
|
24
|
+
function isNonEmptyTrimmedString(value) {
|
|
25
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
26
|
+
}
|
|
27
|
+
// ─── Resource policy ──────────────────────────────────────────────────────────
|
|
28
|
+
const POSITIVE_POLICY_FIELDS = [
|
|
29
|
+
"maxRawFileBytes",
|
|
30
|
+
"maxExtractedTextBytes",
|
|
31
|
+
"maxParserUnits",
|
|
32
|
+
"maxParserObjects",
|
|
33
|
+
"maxChunkCount",
|
|
34
|
+
"maxEmbeddingBatchCount",
|
|
35
|
+
"maxWallClockMs",
|
|
36
|
+
"cancellationDeadlineMs",
|
|
37
|
+
"maxRetryCount",
|
|
38
|
+
"maxPersistedStorageGrowthBytes",
|
|
39
|
+
"largeFileThresholdBytes",
|
|
40
|
+
"extractionWindowPages",
|
|
41
|
+
];
|
|
42
|
+
export function validateLargeDocumentResourcePolicy(input) {
|
|
43
|
+
if (!isRecord(input)) {
|
|
44
|
+
return { ok: false, errors: ["policy must be an object"] };
|
|
45
|
+
}
|
|
46
|
+
const errors = [];
|
|
47
|
+
for (const field of POSITIVE_POLICY_FIELDS) {
|
|
48
|
+
// maxRetryCount may be zero (retries disabled); everything else must be strictly positive.
|
|
49
|
+
const value = input[field];
|
|
50
|
+
const ok = field === "maxRetryCount"
|
|
51
|
+
? isFiniteNonNegativeInteger(value)
|
|
52
|
+
: isFinitePositiveInteger(value);
|
|
53
|
+
if (!ok) {
|
|
54
|
+
errors.push(`policy.${field} must be a ${field === "maxRetryCount" ? "non-negative" : "positive"} integer`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (errors.length === 0) {
|
|
58
|
+
const policy = input;
|
|
59
|
+
if (policy.largeFileThresholdBytes > policy.maxRawFileBytes) {
|
|
60
|
+
errors.push("policy.largeFileThresholdBytes must not exceed policy.maxRawFileBytes");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (errors.length > 0) {
|
|
64
|
+
return { ok: false, errors };
|
|
65
|
+
}
|
|
66
|
+
return { ok: true, value: input };
|
|
67
|
+
}
|
|
68
|
+
// ─── Checkpoint fingerprint ───────────────────────────────────────────────────
|
|
69
|
+
function validateFingerprint(errors, value) {
|
|
70
|
+
if (!isRecord(value)) {
|
|
71
|
+
errors.push("checkpoint.fingerprint must be an object");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (!isNonEmptyHex(value.sourceContentHash)) {
|
|
75
|
+
errors.push("checkpoint.fingerprint.sourceContentHash must be a hex string");
|
|
76
|
+
}
|
|
77
|
+
if (!isNonEmptyTrimmedString(value.parserVersion)) {
|
|
78
|
+
errors.push("checkpoint.fingerprint.parserVersion must be a non-empty string");
|
|
79
|
+
}
|
|
80
|
+
if (!isNonEmptyTrimmedString(value.policyFingerprint)) {
|
|
81
|
+
errors.push("checkpoint.fingerprint.policyFingerprint must be a non-empty string");
|
|
82
|
+
}
|
|
83
|
+
if (!isNonEmptyTrimmedString(value.chunkingStrategyVersion)) {
|
|
84
|
+
errors.push("checkpoint.fingerprint.chunkingStrategyVersion must be a non-empty string");
|
|
85
|
+
}
|
|
86
|
+
if (!isRecord(value.embeddingIdentity)) {
|
|
87
|
+
errors.push("checkpoint.fingerprint.embeddingIdentity must be an object");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ─── Checkpoint record ────────────────────────────────────────────────────────
|
|
91
|
+
const NON_NEGATIVE_CURSOR_FIELDS = [
|
|
92
|
+
"pageCursor",
|
|
93
|
+
"sectionCursor",
|
|
94
|
+
"objectCursor",
|
|
95
|
+
"extractedTextBytes",
|
|
96
|
+
"chunkCursor",
|
|
97
|
+
"embeddedChunkCursor",
|
|
98
|
+
"retryCount",
|
|
99
|
+
"createdAt",
|
|
100
|
+
"updatedAt",
|
|
101
|
+
];
|
|
102
|
+
function isStrategy(value) {
|
|
103
|
+
return (typeof value === "string" &&
|
|
104
|
+
LARGE_DOCUMENT_EXTRACTION_STRATEGIES.includes(value));
|
|
105
|
+
}
|
|
106
|
+
function isPhase(value) {
|
|
107
|
+
return typeof value === "string" && EXTRACTION_PHASES.includes(value);
|
|
108
|
+
}
|
|
109
|
+
function isCoverage(value) {
|
|
110
|
+
return typeof value === "string" && COVERAGE_QUALITIES.includes(value);
|
|
111
|
+
}
|
|
112
|
+
function validateCheckpointIdentity(errors, input) {
|
|
113
|
+
for (const field of ["capsuleId", "documentId", "jobId"]) {
|
|
114
|
+
if (!isNonEmptyTrimmedString(input[field])) {
|
|
115
|
+
errors.push(`checkpoint.${field} must be a non-empty string`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function validateCheckpointEnums(errors, input) {
|
|
120
|
+
if (!isStrategy(input.strategy)) {
|
|
121
|
+
errors.push("checkpoint.strategy must be a known extraction strategy");
|
|
122
|
+
}
|
|
123
|
+
if (!isPhase(input.phase)) {
|
|
124
|
+
errors.push("checkpoint.phase must be a known extraction phase");
|
|
125
|
+
}
|
|
126
|
+
if (!isCoverage(input.coverage)) {
|
|
127
|
+
errors.push("checkpoint.coverage must be a known coverage quality");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function validateCheckpointCursors(errors, input) {
|
|
131
|
+
for (const field of NON_NEGATIVE_CURSOR_FIELDS) {
|
|
132
|
+
if (!isFiniteNonNegativeInteger(input[field])) {
|
|
133
|
+
errors.push(`checkpoint.${field} must be a non-negative integer`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (input.lastEmbeddedChunkId !== undefined &&
|
|
137
|
+
!isNonEmptyTrimmedString(input.lastEmbeddedChunkId)) {
|
|
138
|
+
errors.push("checkpoint.lastEmbeddedChunkId must be a non-empty string when present");
|
|
139
|
+
}
|
|
140
|
+
if (!Array.isArray(input.terminalDiagnostics)) {
|
|
141
|
+
errors.push("checkpoint.terminalDiagnostics must be an array");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export function validateExtractionCheckpointRecord(input) {
|
|
145
|
+
if (!isRecord(input)) {
|
|
146
|
+
return { ok: false, errors: ["checkpoint must be an object"] };
|
|
147
|
+
}
|
|
148
|
+
const errors = [];
|
|
149
|
+
validateCheckpointIdentity(errors, input);
|
|
150
|
+
validateCheckpointEnums(errors, input);
|
|
151
|
+
validateCheckpointCursors(errors, input);
|
|
152
|
+
validateFingerprint(errors, input.fingerprint);
|
|
153
|
+
if (errors.length > 0) {
|
|
154
|
+
return { ok: false, errors };
|
|
155
|
+
}
|
|
156
|
+
return { ok: true, value: input };
|
|
157
|
+
}
|
|
158
|
+
// Convenience guard for user-safe diagnostic/quality-warning strings reused by the BFF layer.
|
|
159
|
+
export function isSafeQualityWarning(value) {
|
|
160
|
+
return isSafeDisplaySummary(value);
|
|
161
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { ChunkId, DocumentId, EmbeddingModelIdentity, KnowledgeCapsuleId } from "./local-knowledge.js";
|
|
2
|
+
import type { ParserDiagnostic } from "./local-knowledge-records.js";
|
|
3
|
+
export interface LargeDocumentResourcePolicy {
|
|
4
|
+
readonly maxRawFileBytes: number;
|
|
5
|
+
readonly maxExtractedTextBytes: number;
|
|
6
|
+
readonly maxParserUnits: number;
|
|
7
|
+
readonly maxParserObjects: number;
|
|
8
|
+
readonly maxChunkCount: number;
|
|
9
|
+
readonly maxEmbeddingBatchCount: number;
|
|
10
|
+
readonly maxWallClockMs: number;
|
|
11
|
+
readonly cancellationDeadlineMs: number;
|
|
12
|
+
readonly maxRetryCount: number;
|
|
13
|
+
readonly maxPersistedStorageGrowthBytes: number;
|
|
14
|
+
readonly largeFileThresholdBytes: number;
|
|
15
|
+
readonly extractionWindowPages: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const DEFAULT_LARGE_DOCUMENT_RESOURCE_POLICY: LargeDocumentResourcePolicy;
|
|
18
|
+
export declare function largeDocumentPolicyFingerprint(policy: LargeDocumentResourcePolicy): string;
|
|
19
|
+
export type LargeDocumentExtractionStrategy = "standard-buffer" | "progressive-pdf" | "unsupported" | "oversized";
|
|
20
|
+
export declare const LARGE_DOCUMENT_EXTRACTION_STRATEGIES: readonly LargeDocumentExtractionStrategy[];
|
|
21
|
+
export type LargeDocumentPreflightDecision = "accept-standard" | "accept-progressive" | "reject-oversized";
|
|
22
|
+
export interface LargeDocumentPreflight {
|
|
23
|
+
readonly strategy: LargeDocumentExtractionStrategy;
|
|
24
|
+
readonly decision: LargeDocumentPreflightDecision;
|
|
25
|
+
readonly sizeBytes: number;
|
|
26
|
+
readonly estimatedWindows?: number;
|
|
27
|
+
readonly reason?: string;
|
|
28
|
+
}
|
|
29
|
+
export type ExtractionPhase = "preflight" | "extracting" | "extracted" | "chunking" | "chunked" | "embedding" | "embedded" | "complete" | "cancelled" | "failed";
|
|
30
|
+
export declare const EXTRACTION_PHASES: readonly ExtractionPhase[];
|
|
31
|
+
export declare const TERMINAL_EXTRACTION_PHASES: readonly ExtractionPhase[];
|
|
32
|
+
export declare function isTerminalExtractionPhase(phase: ExtractionPhase): boolean;
|
|
33
|
+
export type CoverageQuality = "complete" | "text-only" | "partial" | "none";
|
|
34
|
+
export declare const COVERAGE_QUALITIES: readonly CoverageQuality[];
|
|
35
|
+
export type ExtractionCapabilityStatus = "available" | "unavailable" | "degraded" | "failing";
|
|
36
|
+
export declare const EXTRACTION_CAPABILITY_STATUSES: readonly ExtractionCapabilityStatus[];
|
|
37
|
+
export interface ExtractionCapabilityAvailability {
|
|
38
|
+
readonly ocr: ExtractionCapabilityStatus;
|
|
39
|
+
readonly multimodal: ExtractionCapabilityStatus;
|
|
40
|
+
}
|
|
41
|
+
export declare const DEFAULT_EXTRACTION_CAPABILITY_AVAILABILITY: ExtractionCapabilityAvailability;
|
|
42
|
+
export declare function capabilityContributesCoverage(status: ExtractionCapabilityStatus): boolean;
|
|
43
|
+
export declare const LARGE_DOCUMENT_DIAGNOSTIC_CODES: Readonly<{
|
|
44
|
+
readonly PARTIAL_COVERAGE: "PARTIAL_COVERAGE";
|
|
45
|
+
readonly OCR_CAPABILITY_UNAVAILABLE: "OCR_CAPABILITY_UNAVAILABLE";
|
|
46
|
+
readonly MULTIMODAL_CAPABILITY_UNAVAILABLE: "MULTIMODAL_CAPABILITY_UNAVAILABLE";
|
|
47
|
+
readonly CONVERTER_UNAVAILABLE: "CONVERTER_UNAVAILABLE";
|
|
48
|
+
readonly RESOURCE_POLICY_EXCEEDED: "RESOURCE_POLICY_EXCEEDED";
|
|
49
|
+
readonly CHECKPOINT_INCOMPATIBLE: "CHECKPOINT_INCOMPATIBLE";
|
|
50
|
+
readonly EXTRACTION_RESUMED: "EXTRACTION_RESUMED";
|
|
51
|
+
readonly EXTRACTION_PROGRESS: "EXTRACTION_PROGRESS";
|
|
52
|
+
}>;
|
|
53
|
+
export type LargeDocumentDiagnosticCode = (typeof LARGE_DOCUMENT_DIAGNOSTIC_CODES)[keyof typeof LARGE_DOCUMENT_DIAGNOSTIC_CODES];
|
|
54
|
+
export interface CheckpointFingerprint {
|
|
55
|
+
readonly sourceContentHash: string;
|
|
56
|
+
readonly parserVersion: string;
|
|
57
|
+
readonly policyFingerprint: string;
|
|
58
|
+
readonly chunkingStrategyVersion: string;
|
|
59
|
+
readonly embeddingIdentity: EmbeddingModelIdentity;
|
|
60
|
+
}
|
|
61
|
+
export interface ExtractionCheckpointRecord {
|
|
62
|
+
readonly capsuleId: KnowledgeCapsuleId;
|
|
63
|
+
readonly documentId: DocumentId;
|
|
64
|
+
readonly jobId: string;
|
|
65
|
+
readonly strategy: LargeDocumentExtractionStrategy;
|
|
66
|
+
readonly phase: ExtractionPhase;
|
|
67
|
+
readonly pageCursor: number;
|
|
68
|
+
readonly sectionCursor: number;
|
|
69
|
+
readonly objectCursor: number;
|
|
70
|
+
readonly extractedTextBytes: number;
|
|
71
|
+
readonly chunkCursor: number;
|
|
72
|
+
readonly embeddedChunkCursor: number;
|
|
73
|
+
readonly lastEmbeddedChunkId?: ChunkId;
|
|
74
|
+
readonly retryCount: number;
|
|
75
|
+
readonly coverage: CoverageQuality;
|
|
76
|
+
readonly fingerprint: CheckpointFingerprint;
|
|
77
|
+
readonly terminalDiagnostics: readonly ParserDiagnostic[];
|
|
78
|
+
readonly createdAt: number;
|
|
79
|
+
readonly updatedAt: number;
|
|
80
|
+
}
|
|
81
|
+
export type CheckpointIncompatibilityReason = "source-hash" | "parser-version" | "resource-policy" | "chunking-strategy" | "embedding-identity";
|
|
82
|
+
export declare const CHECKPOINT_INCOMPATIBILITY_REASONS: readonly CheckpointIncompatibilityReason[];
|
|
83
|
+
export type CheckpointCompatibility = {
|
|
84
|
+
readonly compatible: true;
|
|
85
|
+
} | {
|
|
86
|
+
readonly compatible: false;
|
|
87
|
+
readonly reasons: readonly CheckpointIncompatibilityReason[];
|
|
88
|
+
};
|
|
89
|
+
export declare function checkpointCompatibility(stored: CheckpointFingerprint, current: CheckpointFingerprint): CheckpointCompatibility;
|
|
90
|
+
export interface LargeDocumentJobProgress {
|
|
91
|
+
readonly documentId: DocumentId;
|
|
92
|
+
readonly safeDisplayName: string;
|
|
93
|
+
readonly strategy: LargeDocumentExtractionStrategy;
|
|
94
|
+
readonly phase: ExtractionPhase;
|
|
95
|
+
readonly processedPages: number;
|
|
96
|
+
readonly extractedTextBytes: number;
|
|
97
|
+
readonly chunkCount: number;
|
|
98
|
+
readonly embeddedChunkCount: number;
|
|
99
|
+
readonly retryCount: number;
|
|
100
|
+
readonly coverage: CoverageQuality;
|
|
101
|
+
readonly resumable: boolean;
|
|
102
|
+
}
|
|
103
|
+
export type LargeDocumentResumeChoice = "resume" | "restart" | "abandon";
|
|
104
|
+
export declare const LARGE_DOCUMENT_RESUME_CHOICES: readonly LargeDocumentResumeChoice[];
|
|
105
|
+
export interface CapsuleLargeDocumentHealth {
|
|
106
|
+
readonly resourcePolicy: LargeDocumentResourcePolicy;
|
|
107
|
+
readonly capabilities: ExtractionCapabilityAvailability;
|
|
108
|
+
readonly progress: readonly LargeDocumentJobProgress[];
|
|
109
|
+
readonly resumableDocuments: readonly DocumentId[];
|
|
110
|
+
readonly partialCoverageDocuments: number;
|
|
111
|
+
readonly qualityWarnings: readonly string[];
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=local-knowledge-large-document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-knowledge-large-document.d.ts","sourceRoot":"","sources":["../src/local-knowledge-large-document.ts"],"names":[],"mappings":"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"}
|