docorbit 0.1.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/LICENSE +21 -0
- package/README.md +660 -0
- package/apps/cli/bin/docorbit.js +8 -0
- package/apps/cli/src/commands/add.ts +44 -0
- package/apps/cli/src/commands/api.ts +38 -0
- package/apps/cli/src/commands/context.ts +47 -0
- package/apps/cli/src/commands/dashboard.ts +55 -0
- package/apps/cli/src/commands/diff.ts +30 -0
- package/apps/cli/src/commands/evaluate.ts +133 -0
- package/apps/cli/src/commands/examples.ts +39 -0
- package/apps/cli/src/commands/export.ts +89 -0
- package/apps/cli/src/commands/impact.ts +31 -0
- package/apps/cli/src/commands/init.ts +69 -0
- package/apps/cli/src/commands/inspect.ts +30 -0
- package/apps/cli/src/commands/mcp.ts +72 -0
- package/apps/cli/src/commands/pitfalls.ts +38 -0
- package/apps/cli/src/commands/recipes.ts +35 -0
- package/apps/cli/src/commands/search.ts +48 -0
- package/apps/cli/src/commands/update.ts +73 -0
- package/apps/cli/src/commands/verify.ts +48 -0
- package/apps/cli/src/formatters/colors.ts +23 -0
- package/apps/cli/src/formatters/inspection.ts +102 -0
- package/apps/cli/src/formatters/knowledge.ts +272 -0
- package/apps/cli/src/formatters/retrieval.ts +74 -0
- package/apps/cli/src/formatters/terminal.ts +6 -0
- package/apps/cli/src/formatters/verification.ts +126 -0
- package/apps/cli/src/index.ts +409 -0
- package/bin/docorbit.js +8 -0
- package/package.json +46 -0
- package/packages/core/src/dashboard/server.ts +314 -0
- package/packages/core/src/dashboard/ui.ts +586 -0
- package/packages/core/src/implementation-service.ts +451 -0
- package/packages/core/src/index.ts +7 -0
- package/packages/core/src/inspector.ts +71 -0
- package/packages/core/src/pipeline.ts +331 -0
- package/packages/crawler/src/config.ts +12 -0
- package/packages/crawler/src/fetcher.ts +185 -0
- package/packages/crawler/src/index.ts +2 -0
- package/packages/discovery/src/index.ts +31 -0
- package/packages/discovery/src/provider.ts +47 -0
- package/packages/discovery/src/providers/generic.ts +98 -0
- package/packages/discovery/src/providers/github.ts +61 -0
- package/packages/discovery/src/providers/llms-txt.ts +73 -0
- package/packages/discovery/src/providers/markdown.ts +48 -0
- package/packages/discovery/src/providers/openapi.ts +91 -0
- package/packages/discovery/src/providers/sitemap.ts +62 -0
- package/packages/discovery/src/providers/skill.ts +54 -0
- package/packages/discovery/src/ranker.ts +123 -0
- package/packages/evaluation/src/dataset.ts +963 -0
- package/packages/evaluation/src/index.ts +8 -0
- package/packages/evaluation/src/runner.ts +241 -0
- package/packages/evaluation/src/strategies/context7-runner.ts +269 -0
- package/packages/evaluation/src/strategies/docorbit-runner.ts +228 -0
- package/packages/evaluation/src/strategies/firecrawl-runner.ts +172 -0
- package/packages/evaluation/src/strategies/web-search-runner.ts +194 -0
- package/packages/evaluation/src/types.ts +34 -0
- package/packages/evaluation/src/version-matcher.ts +73 -0
- package/packages/export/src/agents-md.ts +200 -0
- package/packages/export/src/claude-md.ts +141 -0
- package/packages/export/src/docs-map.ts +150 -0
- package/packages/export/src/index.ts +6 -0
- package/packages/export/src/llms-txt.ts +96 -0
- package/packages/export/src/service.ts +250 -0
- package/packages/export/src/skill-md.ts +128 -0
- package/packages/mcp/src/index.ts +46 -0
- package/packages/mcp/src/resources/index.ts +189 -0
- package/packages/mcp/src/server.ts +278 -0
- package/packages/mcp/src/tools/analyze-impact.ts +74 -0
- package/packages/mcp/src/tools/check-api.ts +86 -0
- package/packages/mcp/src/tools/diff-docs.ts +68 -0
- package/packages/mcp/src/tools/export-context.ts +73 -0
- package/packages/mcp/src/tools/find-api.ts +99 -0
- package/packages/mcp/src/tools/find-example.ts +100 -0
- package/packages/mcp/src/tools/find-pitfall.ts +94 -0
- package/packages/mcp/src/tools/find-recipe.ts +98 -0
- package/packages/mcp/src/tools/get-doc.ts +130 -0
- package/packages/mcp/src/tools/get-docs-map.ts +64 -0
- package/packages/mcp/src/tools/get-version.ts +118 -0
- package/packages/mcp/src/tools/implementation-context.ts +88 -0
- package/packages/mcp/src/tools/index.ts +59 -0
- package/packages/mcp/src/tools/list-sources.ts +85 -0
- package/packages/mcp/src/tools/search-docs.ts +123 -0
- package/packages/mcp/src/tools/types.ts +28 -0
- package/packages/mcp/src/transports/http.ts +256 -0
- package/packages/mcp/src/transports/stdio.ts +105 -0
- package/packages/mcp/src/transports/types.ts +6 -0
- package/packages/mcp/src/types.ts +102 -0
- package/packages/normalizer/src/example-indexer.ts +240 -0
- package/packages/normalizer/src/html.ts +253 -0
- package/packages/normalizer/src/index.ts +8 -0
- package/packages/normalizer/src/llms.ts +83 -0
- package/packages/normalizer/src/openapi/endpoint-parser.ts +406 -0
- package/packages/normalizer/src/openapi/schema-resolver.ts +111 -0
- package/packages/normalizer/src/openapi.ts +2 -0
- package/packages/normalizer/src/page.ts +184 -0
- package/packages/normalizer/src/pitfall-extractor.ts +190 -0
- package/packages/normalizer/src/slicer.ts +455 -0
- package/packages/retrieval/src/engine.ts +120 -0
- package/packages/retrieval/src/index.ts +7 -0
- package/packages/retrieval/src/intent.ts +43 -0
- package/packages/retrieval/src/packer.ts +145 -0
- package/packages/retrieval/src/recipe-engine.ts +313 -0
- package/packages/retrieval/src/scorer.ts +139 -0
- package/packages/retrieval/src/weights.ts +31 -0
- package/packages/security/src/annotations.ts +112 -0
- package/packages/security/src/index.ts +2 -0
- package/packages/security/src/ssrf.ts +153 -0
- package/packages/shared/src/errors.ts +53 -0
- package/packages/shared/src/hashing.ts +23 -0
- package/packages/shared/src/index.ts +3 -0
- package/packages/shared/src/types.ts +881 -0
- package/packages/storage/src/db.ts +72 -0
- package/packages/storage/src/index.ts +11 -0
- package/packages/storage/src/interfaces.ts +115 -0
- package/packages/storage/src/repositories/api-repository.ts +219 -0
- package/packages/storage/src/repositories/chunk-repository.ts +316 -0
- package/packages/storage/src/repositories/example-repository.ts +206 -0
- package/packages/storage/src/repositories/page-repository.ts +205 -0
- package/packages/storage/src/repositories/pitfall-repository.ts +188 -0
- package/packages/storage/src/repositories/source-repository.ts +205 -0
- package/packages/storage/src/repository.ts +256 -0
- package/packages/storage/src/schema.ts +269 -0
- package/packages/storage/src/search-tokens.ts +28 -0
- package/packages/verification/src/diff-engine.ts +258 -0
- package/packages/verification/src/extractor.ts +339 -0
- package/packages/verification/src/impact-scanner.ts +203 -0
- package/packages/verification/src/index.ts +5 -0
- package/packages/verification/src/services.ts +238 -0
- package/packages/verification/src/verifier.ts +375 -0
- package/packages/workspace/src/detector.ts +143 -0
- package/packages/workspace/src/ecosystems/cargo.ts +84 -0
- package/packages/workspace/src/ecosystems/composer.ts +42 -0
- package/packages/workspace/src/ecosystems/go.ts +54 -0
- package/packages/workspace/src/ecosystems/index.ts +34 -0
- package/packages/workspace/src/ecosystems/maven.ts +34 -0
- package/packages/workspace/src/ecosystems/npm.ts +83 -0
- package/packages/workspace/src/ecosystems/pub.ts +40 -0
- package/packages/workspace/src/ecosystems/pypi.ts +100 -0
- package/packages/workspace/src/ecosystems/rubygems.ts +30 -0
- package/packages/workspace/src/ecosystems/types.ts +18 -0
- package/packages/workspace/src/index.ts +5 -0
- package/packages/workspace/src/lockfile.ts +194 -0
- package/packages/workspace/src/resolver.ts +234 -0
- package/packages/workspace/src/semver.ts +259 -0
|
@@ -0,0 +1,881 @@
|
|
|
1
|
+
export type SourceType =
|
|
2
|
+
| 'llms_txt'
|
|
3
|
+
| 'llms_full_txt'
|
|
4
|
+
| 'openapi'
|
|
5
|
+
| 'markdown'
|
|
6
|
+
| 'sitemap'
|
|
7
|
+
| 'github'
|
|
8
|
+
| 'skill'
|
|
9
|
+
| 'web';
|
|
10
|
+
|
|
11
|
+
export type SourceAuthority = 'official' | 'community' | 'third_party';
|
|
12
|
+
|
|
13
|
+
export type SourceStatus = 'valid' | 'invalid' | 'unreachable';
|
|
14
|
+
|
|
15
|
+
export interface DiscoveredSource {
|
|
16
|
+
url: string;
|
|
17
|
+
type: SourceType;
|
|
18
|
+
discoveredBy: string;
|
|
19
|
+
status: SourceStatus;
|
|
20
|
+
contentType?: string;
|
|
21
|
+
confidence: number; // 0.0 to 1.0
|
|
22
|
+
authority: SourceAuthority;
|
|
23
|
+
machineReadable: boolean;
|
|
24
|
+
metadata?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type SourcePurpose =
|
|
28
|
+
| 'navigation' // Site structure, link catalogs, sitemaps
|
|
29
|
+
| 'conceptual' // Guides, tutorials, architectural explanations
|
|
30
|
+
| 'api' // Structured schemas, endpoints, parameter constraints
|
|
31
|
+
| 'examples' // Working code blocks, implementation snippets
|
|
32
|
+
| 'implementation'; // Task-oriented end-to-end workflows
|
|
33
|
+
|
|
34
|
+
export interface SourceRankResult {
|
|
35
|
+
purpose: SourcePurpose;
|
|
36
|
+
recommended: DiscoveredSource | null;
|
|
37
|
+
ranked: DiscoveredSource[];
|
|
38
|
+
rationale: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface Heading {
|
|
42
|
+
level: number;
|
|
43
|
+
text: string;
|
|
44
|
+
anchor: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface Link {
|
|
48
|
+
text: string;
|
|
49
|
+
url: string;
|
|
50
|
+
isExternal: boolean;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface CodeExample {
|
|
54
|
+
id: string;
|
|
55
|
+
language: string;
|
|
56
|
+
code: string;
|
|
57
|
+
caption?: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface SecurityAnnotation {
|
|
61
|
+
type: 'prompt_injection_suspected' | 'unsafe_link' | 'suspicious_instruction';
|
|
62
|
+
location?: string;
|
|
63
|
+
evidence: string;
|
|
64
|
+
severity: 'low' | 'medium' | 'high';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface Provenance {
|
|
68
|
+
sourceUrl: string;
|
|
69
|
+
targetUrl: string;
|
|
70
|
+
fetchedAt: string;
|
|
71
|
+
discoveredBy: string;
|
|
72
|
+
contentHash: string;
|
|
73
|
+
snapshotId?: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface NormalizedPage {
|
|
77
|
+
id: string;
|
|
78
|
+
sourceId: string;
|
|
79
|
+
title: string;
|
|
80
|
+
url: string;
|
|
81
|
+
content: string; // Deterministic, sanitized Markdown
|
|
82
|
+
headings: Heading[];
|
|
83
|
+
links: Link[];
|
|
84
|
+
codeExamples: CodeExample[];
|
|
85
|
+
contentHash: string; // SHA-256 of normalized content
|
|
86
|
+
fetchedAt: string;
|
|
87
|
+
rawBytes: number;
|
|
88
|
+
estimatedTokens: number;
|
|
89
|
+
securityAnnotations: SecurityAnnotation[];
|
|
90
|
+
provenance?: Provenance;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface LlmsLink {
|
|
94
|
+
title: string;
|
|
95
|
+
url: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface LlmsSection {
|
|
100
|
+
name: string;
|
|
101
|
+
links: LlmsLink[];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface LlmsDocument {
|
|
105
|
+
title?: string;
|
|
106
|
+
summary?: string;
|
|
107
|
+
sections: LlmsSection[];
|
|
108
|
+
rawContent: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface OpenApiSummary {
|
|
112
|
+
specVersion: string;
|
|
113
|
+
title: string;
|
|
114
|
+
description?: string;
|
|
115
|
+
servers: string[];
|
|
116
|
+
pathCount: number;
|
|
117
|
+
sourceUrl: string;
|
|
118
|
+
rawJson?: Record<string, unknown>;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface CrawlerConfig {
|
|
122
|
+
maxPages: number;
|
|
123
|
+
maxDepth: number;
|
|
124
|
+
maxBytesPerResponse: number;
|
|
125
|
+
timeoutMs: number;
|
|
126
|
+
maxRedirects: number;
|
|
127
|
+
concurrency: number;
|
|
128
|
+
allowedProtocols: string[];
|
|
129
|
+
userAgent: string;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface Target {
|
|
133
|
+
type: 'url' | 'library' | 'package' | 'git' | 'local';
|
|
134
|
+
value: string;
|
|
135
|
+
normalizedUrl?: string;
|
|
136
|
+
metadata?: Record<string, unknown>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface CrawlPolicy {
|
|
140
|
+
purpose?: SourcePurpose;
|
|
141
|
+
maxPages: number;
|
|
142
|
+
maxDepth: number;
|
|
143
|
+
followLlmsReferences: boolean;
|
|
144
|
+
followExternalDomains: boolean;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// --- Milestone 2: Semantic Slicing & Retrieval Models ---
|
|
148
|
+
|
|
149
|
+
export type ChunkType = 'prose' | 'code' | 'api' | 'warning' | 'example' | 'mixed';
|
|
150
|
+
|
|
151
|
+
export interface DocumentChunk {
|
|
152
|
+
id: string;
|
|
153
|
+
pageId: string;
|
|
154
|
+
snapshotId: string;
|
|
155
|
+
title?: string;
|
|
156
|
+
sectionPath: string[]; // Heading hierarchy breadcrumbs e.g. ['Authentication', 'OAuth 2.0', 'Tokens']
|
|
157
|
+
content: string;
|
|
158
|
+
chunkType: ChunkType;
|
|
159
|
+
language?: string;
|
|
160
|
+
tokenEstimate: number; // Heuristic estimate
|
|
161
|
+
ordinal: number;
|
|
162
|
+
contentHash: string;
|
|
163
|
+
provenance: Provenance;
|
|
164
|
+
docVersion?: string; // Optional version tag (e.g. 'v14', '14.2', 'latest')
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
export interface ChunkCode {
|
|
169
|
+
id: string;
|
|
170
|
+
chunkId: string;
|
|
171
|
+
language?: string;
|
|
172
|
+
code: string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export type SymbolKind = 'function' | 'class' | 'interface' | 'endpoint' | 'type' | 'variable' | 'config';
|
|
176
|
+
|
|
177
|
+
export interface SymbolReference {
|
|
178
|
+
id: string;
|
|
179
|
+
chunkId: string;
|
|
180
|
+
name: string;
|
|
181
|
+
kind: SymbolKind;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export type ChunkRelationshipType =
|
|
185
|
+
| 'parent_section'
|
|
186
|
+
| 'next_chunk'
|
|
187
|
+
| 'previous_chunk'
|
|
188
|
+
| 'contains_code'
|
|
189
|
+
| 'explains_code';
|
|
190
|
+
|
|
191
|
+
export interface ChunkRelationship {
|
|
192
|
+
sourceChunkId: string;
|
|
193
|
+
targetChunkId: string;
|
|
194
|
+
type: ChunkRelationshipType;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export interface ChunkingConfig {
|
|
198
|
+
targetTokens: number;
|
|
199
|
+
maxTokens: number;
|
|
200
|
+
overlapTokens: number;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export type QueryIntent =
|
|
204
|
+
| 'api'
|
|
205
|
+
| 'examples'
|
|
206
|
+
| 'implementation'
|
|
207
|
+
| 'conceptual'
|
|
208
|
+
| 'troubleshooting'
|
|
209
|
+
| 'configuration';
|
|
210
|
+
|
|
211
|
+
export interface ScoringWeights {
|
|
212
|
+
version: string;
|
|
213
|
+
bm25Weight: number;
|
|
214
|
+
exactPhraseBonus: number;
|
|
215
|
+
titleBonus: number;
|
|
216
|
+
sectionPathBonus: number;
|
|
217
|
+
symbolMatchBonus: number;
|
|
218
|
+
intentTypeBonus: number;
|
|
219
|
+
versionBonus: number; // Bonus when chunk version matches project dependency version
|
|
220
|
+
authorityWeights: Record<SourceAuthority, number>;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export interface SearchResult {
|
|
224
|
+
chunk: DocumentChunk;
|
|
225
|
+
score: number;
|
|
226
|
+
matchReasons: string[];
|
|
227
|
+
symbols: SymbolReference[];
|
|
228
|
+
codeSnippets: ChunkCode[];
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export interface SearchOptions {
|
|
232
|
+
limit?: number;
|
|
233
|
+
chunkType?: ChunkType;
|
|
234
|
+
snapshotId?: string;
|
|
235
|
+
sourceId?: string;
|
|
236
|
+
minScore?: number;
|
|
237
|
+
intent?: QueryIntent;
|
|
238
|
+
weights?: Partial<ScoringWeights>;
|
|
239
|
+
docVersion?: string; // Filter/boost by documentation version (e.g. 'v14')
|
|
240
|
+
projectDir?: string; // Path to project workspace to resolve dependencies automatically
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export interface ContextPackage {
|
|
244
|
+
task: string;
|
|
245
|
+
detectedIntent: QueryIntent;
|
|
246
|
+
totalEstimatedTokens: number;
|
|
247
|
+
tokenBudget: number;
|
|
248
|
+
chunks: DocumentChunk[];
|
|
249
|
+
markdown: string;
|
|
250
|
+
sources: string[];
|
|
251
|
+
warnings: string[];
|
|
252
|
+
resolvedVersions?: Record<string, VersionResolutionResult>;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export interface ContextOptions {
|
|
256
|
+
tokenBudget?: number; // Target token budget (default 3000)
|
|
257
|
+
maxChunks?: number;
|
|
258
|
+
intent?: QueryIntent;
|
|
259
|
+
weights?: Partial<ScoringWeights>;
|
|
260
|
+
redundancyPenalty?: number; // 0.0 to 1.0 penalty for chunks covering identical sections
|
|
261
|
+
snapshotId?: string;
|
|
262
|
+
docVersion?: string; // Target documentation version
|
|
263
|
+
projectDir?: string; // Path to project workspace
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// --- Milestone 3: Version Intelligence & Project Awareness ---
|
|
267
|
+
|
|
268
|
+
export type Ecosystem =
|
|
269
|
+
| 'npm'
|
|
270
|
+
| 'cargo'
|
|
271
|
+
| 'go'
|
|
272
|
+
| 'pypi'
|
|
273
|
+
| 'maven'
|
|
274
|
+
| 'rubygems'
|
|
275
|
+
| 'composer'
|
|
276
|
+
| 'pub';
|
|
277
|
+
|
|
278
|
+
export interface ProjectDependency {
|
|
279
|
+
name: string;
|
|
280
|
+
ecosystem: Ecosystem;
|
|
281
|
+
requestedVersion: string;
|
|
282
|
+
resolvedVersion?: string;
|
|
283
|
+
sourceFile: string;
|
|
284
|
+
packagePath?: string;
|
|
285
|
+
isDev?: boolean;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export interface WorkspaceScanResult {
|
|
289
|
+
workspaceRoot: string;
|
|
290
|
+
ecosystems: Ecosystem[];
|
|
291
|
+
manifestsFound: string[];
|
|
292
|
+
dependencies: ProjectDependency[];
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
export type DocVersionMatch =
|
|
296
|
+
| 'exact'
|
|
297
|
+
| 'major_minor'
|
|
298
|
+
| 'major'
|
|
299
|
+
| 'range'
|
|
300
|
+
| 'latest_fallback'
|
|
301
|
+
| 'unresolved';
|
|
302
|
+
|
|
303
|
+
export interface VersionResolutionResult {
|
|
304
|
+
dependencyName: string;
|
|
305
|
+
projectVersion: string;
|
|
306
|
+
selectedDocVersion: string;
|
|
307
|
+
matchType: DocVersionMatch;
|
|
308
|
+
confidence: number;
|
|
309
|
+
availableVersions: string[];
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export interface LockedDoc {
|
|
313
|
+
name: string;
|
|
314
|
+
ecosystem: Ecosystem;
|
|
315
|
+
requestedVersion: string;
|
|
316
|
+
resolvedDependencyVersion: string;
|
|
317
|
+
sourceFile: string;
|
|
318
|
+
docSourceUrl: string;
|
|
319
|
+
docVersion: string;
|
|
320
|
+
matchType: DocVersionMatch;
|
|
321
|
+
confidence: number;
|
|
322
|
+
snapshotId: string;
|
|
323
|
+
snapshotHash: string;
|
|
324
|
+
retrievedAt: string;
|
|
325
|
+
metadata?: Record<string, unknown>;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export interface DocsLock {
|
|
329
|
+
version: 1;
|
|
330
|
+
workspaceRoot: string;
|
|
331
|
+
dependencies: Record<string, LockedDoc>;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// --- Milestone 4: Structured Implementation Knowledge ---
|
|
335
|
+
|
|
336
|
+
export type EvidenceLevel =
|
|
337
|
+
| 'documented_fact'
|
|
338
|
+
| 'inferred_relationship'
|
|
339
|
+
| 'missing_information';
|
|
340
|
+
|
|
341
|
+
export interface ApiParameter {
|
|
342
|
+
name: string;
|
|
343
|
+
in: 'path' | 'query' | 'header' | 'cookie';
|
|
344
|
+
required: boolean;
|
|
345
|
+
type?: string;
|
|
346
|
+
description?: string;
|
|
347
|
+
default?: unknown;
|
|
348
|
+
schema?: Record<string, unknown>;
|
|
349
|
+
example?: unknown;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export interface ApiSchema {
|
|
353
|
+
type?: string;
|
|
354
|
+
properties?: Record<string, unknown>;
|
|
355
|
+
required?: string[];
|
|
356
|
+
description?: string;
|
|
357
|
+
items?: Record<string, unknown>;
|
|
358
|
+
raw?: Record<string, unknown>;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export interface ApiResponse {
|
|
362
|
+
statusCode: string; // e.g. '200', '201', '400', 'default'
|
|
363
|
+
description: string;
|
|
364
|
+
contentType?: string;
|
|
365
|
+
schema?: ApiSchema;
|
|
366
|
+
example?: unknown;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
export interface ApiAuthScheme {
|
|
370
|
+
type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect' | 'mutualTLS';
|
|
371
|
+
name?: string;
|
|
372
|
+
in?: 'header' | 'query' | 'cookie';
|
|
373
|
+
scheme?: string; // e.g. 'bearer', 'basic'
|
|
374
|
+
bearerFormat?: string; // e.g. 'JWT'
|
|
375
|
+
description?: string;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
export interface ApiErrorResponse {
|
|
379
|
+
statusCode: string;
|
|
380
|
+
description: string;
|
|
381
|
+
schema?: ApiSchema;
|
|
382
|
+
example?: unknown;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
export interface ApiPaginationMetadata {
|
|
386
|
+
type: 'cursor' | 'offset' | 'page' | 'link_header' | 'unknown';
|
|
387
|
+
parameters: string[]; // e.g. ['starting_after', 'limit']
|
|
388
|
+
responseFields: string[]; // e.g. ['has_more', 'data']
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
export interface ApiEndpoint {
|
|
392
|
+
id: string;
|
|
393
|
+
pageId: string;
|
|
394
|
+
snapshotId: string;
|
|
395
|
+
method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head' | 'options';
|
|
396
|
+
path: string;
|
|
397
|
+
summary?: string;
|
|
398
|
+
description?: string;
|
|
399
|
+
operationId?: string;
|
|
400
|
+
parameters: ApiParameter[];
|
|
401
|
+
requestSchema?: ApiSchema;
|
|
402
|
+
responseSchema?: Record<string, ApiResponse>;
|
|
403
|
+
auth: ApiAuthScheme[];
|
|
404
|
+
errors: ApiErrorResponse[];
|
|
405
|
+
pagination?: ApiPaginationMetadata;
|
|
406
|
+
deprecated: boolean;
|
|
407
|
+
docVersion?: string;
|
|
408
|
+
provenance?: Provenance;
|
|
409
|
+
createdAt: string;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
export interface IndexedExample {
|
|
413
|
+
id: string;
|
|
414
|
+
chunkId?: string;
|
|
415
|
+
pageId: string;
|
|
416
|
+
snapshotId: string;
|
|
417
|
+
language: string;
|
|
418
|
+
framework?: string;
|
|
419
|
+
task: string;
|
|
420
|
+
code: string;
|
|
421
|
+
sourceUrl: string;
|
|
422
|
+
sourceAuthority: SourceAuthority;
|
|
423
|
+
relatedApi?: string; // e.g. 'POST /v1/webhook_endpoints'
|
|
424
|
+
relatedSymbol?: string; // e.g. 'constructEvent'
|
|
425
|
+
docVersion?: string;
|
|
426
|
+
provenance?: Provenance;
|
|
427
|
+
createdAt: string;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
export type PitfallKind =
|
|
431
|
+
| 'deprecated'
|
|
432
|
+
| 'removed'
|
|
433
|
+
| 'breaking_change'
|
|
434
|
+
| 'server_only'
|
|
435
|
+
| 'client_only'
|
|
436
|
+
| 'required_config'
|
|
437
|
+
| 'permission'
|
|
438
|
+
| 'rate_limit'
|
|
439
|
+
| 'runtime_restriction'
|
|
440
|
+
| 'security';
|
|
441
|
+
|
|
442
|
+
export interface Pitfall {
|
|
443
|
+
id: string;
|
|
444
|
+
chunkId?: string;
|
|
445
|
+
pageId: string;
|
|
446
|
+
snapshotId: string;
|
|
447
|
+
kind: PitfallKind;
|
|
448
|
+
title: string;
|
|
449
|
+
content: string;
|
|
450
|
+
relatedApi?: string;
|
|
451
|
+
relatedSymbol?: string;
|
|
452
|
+
docVersion?: string;
|
|
453
|
+
provenance?: Provenance;
|
|
454
|
+
createdAt: string;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export interface RecipeStep {
|
|
458
|
+
step: number;
|
|
459
|
+
title: string;
|
|
460
|
+
description: string;
|
|
461
|
+
evidenceLevel: EvidenceLevel;
|
|
462
|
+
apiEndpoint?: string; // e.g. 'POST /v1/subscriptions'
|
|
463
|
+
exampleCode?: string;
|
|
464
|
+
pitfalls?: string[];
|
|
465
|
+
sourceUrl?: string;
|
|
466
|
+
sourceChunkIds?: string[];
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
export interface RecipeValidationStep {
|
|
470
|
+
step: number;
|
|
471
|
+
description: string;
|
|
472
|
+
evidenceLevel: EvidenceLevel;
|
|
473
|
+
expectedResponse?: string;
|
|
474
|
+
testPattern?: string;
|
|
475
|
+
sourceUrl?: string;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
export interface Recipe {
|
|
479
|
+
id: string;
|
|
480
|
+
goal: string;
|
|
481
|
+
prerequisites: Array<{ text: string; evidenceLevel: EvidenceLevel; sourceUrl?: string }>;
|
|
482
|
+
orderedSteps: RecipeStep[];
|
|
483
|
+
requiredApis: string[];
|
|
484
|
+
examples: string[];
|
|
485
|
+
pitfalls: string[];
|
|
486
|
+
validationSteps: RecipeValidationStep[];
|
|
487
|
+
sources: string[];
|
|
488
|
+
docVersion?: string;
|
|
489
|
+
confidence: number;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
export interface ApiCommandOptions {
|
|
493
|
+
method?: string;
|
|
494
|
+
docVersion?: string;
|
|
495
|
+
projectDir?: string;
|
|
496
|
+
limit?: number;
|
|
497
|
+
json?: boolean;
|
|
498
|
+
dbPath?: string;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
export interface ExamplesCommandOptions {
|
|
502
|
+
language?: string;
|
|
503
|
+
framework?: string;
|
|
504
|
+
docVersion?: string;
|
|
505
|
+
projectDir?: string;
|
|
506
|
+
limit?: number;
|
|
507
|
+
json?: boolean;
|
|
508
|
+
dbPath?: string;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
export interface PitfallsCommandOptions {
|
|
512
|
+
kind?: PitfallKind;
|
|
513
|
+
docVersion?: string;
|
|
514
|
+
projectDir?: string;
|
|
515
|
+
limit?: number;
|
|
516
|
+
json?: boolean;
|
|
517
|
+
dbPath?: string;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
export interface RecipesCommandOptions {
|
|
521
|
+
docVersion?: string;
|
|
522
|
+
projectDir?: string;
|
|
523
|
+
json?: boolean;
|
|
524
|
+
dbPath?: string;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// --- Milestone 6 Verification, Diff & Impact Types ---
|
|
528
|
+
|
|
529
|
+
export type VerificationRule =
|
|
530
|
+
| 'endpoint_validity'
|
|
531
|
+
| 'method_validity'
|
|
532
|
+
| 'required_parameters'
|
|
533
|
+
| 'schema_compatibility'
|
|
534
|
+
| 'deprecation'
|
|
535
|
+
| 'removed_api'
|
|
536
|
+
| 'version_mismatch'
|
|
537
|
+
| 'response_assumption';
|
|
538
|
+
|
|
539
|
+
export type VerificationSeverity = 'error' | 'warning' | 'info';
|
|
540
|
+
|
|
541
|
+
export type VerificationStatus =
|
|
542
|
+
| 'verified'
|
|
543
|
+
| 'warning'
|
|
544
|
+
| 'mismatch'
|
|
545
|
+
| 'insufficient_evidence';
|
|
546
|
+
|
|
547
|
+
export interface VerificationFinding {
|
|
548
|
+
id: string;
|
|
549
|
+
rule: VerificationRule;
|
|
550
|
+
severity: VerificationSeverity;
|
|
551
|
+
status: VerificationStatus;
|
|
552
|
+
message: string;
|
|
553
|
+
location?: {
|
|
554
|
+
line?: number;
|
|
555
|
+
column?: number;
|
|
556
|
+
snippet?: string;
|
|
557
|
+
};
|
|
558
|
+
expected?: unknown;
|
|
559
|
+
actual?: unknown;
|
|
560
|
+
docVersion?: string;
|
|
561
|
+
provenance?: {
|
|
562
|
+
sourceUrl?: string;
|
|
563
|
+
sourceAuthority?: string;
|
|
564
|
+
endpointId?: string;
|
|
565
|
+
pitfallId?: string;
|
|
566
|
+
};
|
|
567
|
+
confidence: number;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
export interface ExtractedApiCall {
|
|
571
|
+
endpointPath?: string;
|
|
572
|
+
method?: string;
|
|
573
|
+
parameters?: Record<string, unknown>;
|
|
574
|
+
bodyFields?: string[];
|
|
575
|
+
headers?: Record<string, string>;
|
|
576
|
+
responseFieldsAccessed?: string[];
|
|
577
|
+
symbol?: string;
|
|
578
|
+
rawSnippet: string;
|
|
579
|
+
line?: number;
|
|
580
|
+
language?: string;
|
|
581
|
+
isDynamicOrAmbiguous?: boolean;
|
|
582
|
+
reasonIfAmbiguous?: string;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export interface VerificationResult {
|
|
586
|
+
verdict: VerificationStatus;
|
|
587
|
+
summary: string;
|
|
588
|
+
targetVersion?: string;
|
|
589
|
+
projectVersion?: string;
|
|
590
|
+
matchedLibrary?: string;
|
|
591
|
+
findings: VerificationFinding[];
|
|
592
|
+
extractedCalls: ExtractedApiCall[];
|
|
593
|
+
totalChecks: number;
|
|
594
|
+
untrusted: true;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
export interface EndpointDiffItem {
|
|
598
|
+
path: string;
|
|
599
|
+
method: string;
|
|
600
|
+
changeType: 'added' | 'removed' | 'deprecated' | 'modified';
|
|
601
|
+
changes?: string[];
|
|
602
|
+
endpoint: ApiEndpoint;
|
|
603
|
+
previousEndpoint?: ApiEndpoint;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
export interface DocDiffResult {
|
|
607
|
+
fromVersion?: string;
|
|
608
|
+
toVersion?: string;
|
|
609
|
+
fromSnapshotId?: string;
|
|
610
|
+
toSnapshotId?: string;
|
|
611
|
+
sourceId?: string;
|
|
612
|
+
summary: {
|
|
613
|
+
endpointsAdded: number;
|
|
614
|
+
endpointsRemoved: number;
|
|
615
|
+
endpointsModified: number;
|
|
616
|
+
endpointsDeprecated: number;
|
|
617
|
+
pitfallsAdded: number;
|
|
618
|
+
pitfallsRemoved: number;
|
|
619
|
+
contentChanged: number;
|
|
620
|
+
};
|
|
621
|
+
apiChanges: EndpointDiffItem[];
|
|
622
|
+
pitfallChanges: Array<{
|
|
623
|
+
changeType: 'added' | 'removed';
|
|
624
|
+
pitfall: Pitfall;
|
|
625
|
+
}>;
|
|
626
|
+
contentChanges: Array<{
|
|
627
|
+
title: string;
|
|
628
|
+
changeType: 'added' | 'removed' | 'modified';
|
|
629
|
+
summary: string;
|
|
630
|
+
}>;
|
|
631
|
+
retrievedAt: string;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
export interface AffectedFileLocation {
|
|
635
|
+
filePath: string;
|
|
636
|
+
line: number;
|
|
637
|
+
column?: number;
|
|
638
|
+
snippet: string;
|
|
639
|
+
reason: string;
|
|
640
|
+
matchedPattern: string;
|
|
641
|
+
changeCategory:
|
|
642
|
+
| 'removed_api'
|
|
643
|
+
| 'deprecated_api'
|
|
644
|
+
| 'modified_parameters'
|
|
645
|
+
| 'breaking_pitfall'
|
|
646
|
+
| 'content_change';
|
|
647
|
+
certainty: 'high' | 'medium' | 'heuristic';
|
|
648
|
+
confidence: number;
|
|
649
|
+
relatedChange: {
|
|
650
|
+
endpoint?: string;
|
|
651
|
+
symbol?: string;
|
|
652
|
+
pitfallTitle?: string;
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
export interface ImpactAnalysisResult {
|
|
657
|
+
projectDir: string;
|
|
658
|
+
fromVersion?: string;
|
|
659
|
+
toVersion?: string;
|
|
660
|
+
totalFilesScanned: number;
|
|
661
|
+
affectedFilesCount: number;
|
|
662
|
+
affectedLocations: AffectedFileLocation[];
|
|
663
|
+
summary: string;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
export interface VerifyCommandOptions {
|
|
667
|
+
docVersion?: string;
|
|
668
|
+
projectDir?: string;
|
|
669
|
+
library?: string;
|
|
670
|
+
language?: string;
|
|
671
|
+
json?: boolean;
|
|
672
|
+
dbPath?: string;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
export interface DiffCommandOptions {
|
|
676
|
+
from?: string;
|
|
677
|
+
to?: string;
|
|
678
|
+
source?: string;
|
|
679
|
+
json?: boolean;
|
|
680
|
+
dbPath?: string;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
export interface ImpactCommandOptions {
|
|
684
|
+
from?: string;
|
|
685
|
+
to?: string;
|
|
686
|
+
projectDir?: string;
|
|
687
|
+
source?: string;
|
|
688
|
+
json?: boolean;
|
|
689
|
+
dbPath?: string;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
// --- Milestone 7: Web Dashboard & Agent File Exports ---
|
|
693
|
+
|
|
694
|
+
export type ExportFormat =
|
|
695
|
+
| 'agents.md'
|
|
696
|
+
| 'claude.md'
|
|
697
|
+
| 'skill.md'
|
|
698
|
+
| 'llms.txt'
|
|
699
|
+
| 'docs-map.md';
|
|
700
|
+
|
|
701
|
+
export interface ExportOptions {
|
|
702
|
+
format: ExportFormat;
|
|
703
|
+
projectDir?: string;
|
|
704
|
+
targetSource?: string;
|
|
705
|
+
docVersion?: string;
|
|
706
|
+
outputPath?: string;
|
|
707
|
+
stdout?: boolean;
|
|
708
|
+
tokenBudget?: number;
|
|
709
|
+
dbPath?: string;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
export interface ExportResult {
|
|
713
|
+
format: ExportFormat;
|
|
714
|
+
content: string;
|
|
715
|
+
outputPath?: string;
|
|
716
|
+
metadata: {
|
|
717
|
+
generatedAt: string;
|
|
718
|
+
sources: string[];
|
|
719
|
+
docVersion?: string;
|
|
720
|
+
projectDependencies: Array<{ name: string; version: string; matchType: string }>;
|
|
721
|
+
totalApis: number;
|
|
722
|
+
totalPitfalls: number;
|
|
723
|
+
totalExamples: number;
|
|
724
|
+
tokenEstimate: number;
|
|
725
|
+
untrusted: true;
|
|
726
|
+
};
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
export interface DocumentationMapNode {
|
|
730
|
+
id: string;
|
|
731
|
+
title: string;
|
|
732
|
+
url: string;
|
|
733
|
+
version?: string;
|
|
734
|
+
sourceId: string;
|
|
735
|
+
chunkCount: number;
|
|
736
|
+
estimatedTokens: number;
|
|
737
|
+
headings: string[];
|
|
738
|
+
apis?: string[];
|
|
739
|
+
pitfallCount?: number;
|
|
740
|
+
exampleCount?: number;
|
|
741
|
+
untrusted: true;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
export interface DocumentationMapResult {
|
|
745
|
+
totalSources: number;
|
|
746
|
+
totalPages: number;
|
|
747
|
+
totalChunks: number;
|
|
748
|
+
totalEstimatedTokens: number;
|
|
749
|
+
sources: Array<{
|
|
750
|
+
id: string;
|
|
751
|
+
url: string;
|
|
752
|
+
version?: string;
|
|
753
|
+
pageCount: number;
|
|
754
|
+
chunkCount: number;
|
|
755
|
+
}>;
|
|
756
|
+
pages: DocumentationMapNode[];
|
|
757
|
+
markdownTree: string;
|
|
758
|
+
untrusted: true;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
export interface DashboardOptions {
|
|
762
|
+
port?: number;
|
|
763
|
+
host?: string;
|
|
764
|
+
dbPath?: string;
|
|
765
|
+
projectDir?: string;
|
|
766
|
+
open?: boolean;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
export interface DashboardStats {
|
|
770
|
+
totalSources: number;
|
|
771
|
+
totalPages: number;
|
|
772
|
+
totalChunks: number;
|
|
773
|
+
totalApis: number;
|
|
774
|
+
totalPitfalls: number;
|
|
775
|
+
totalExamples: number;
|
|
776
|
+
totalRecipes: number;
|
|
777
|
+
activeVersions: string[];
|
|
778
|
+
dbPath: string;
|
|
779
|
+
untrusted: true;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// --- Milestone 8 Evaluation & Benchmarking Types ---
|
|
783
|
+
|
|
784
|
+
export type AgentEvaluationStrategy =
|
|
785
|
+
| 'agent_official_docs_fetch'
|
|
786
|
+
| 'agent_context7'
|
|
787
|
+
| 'agent_docorbit'
|
|
788
|
+
| 'agent_firecrawl'
|
|
789
|
+
| 'agent_web_search';
|
|
790
|
+
|
|
791
|
+
export type EvaluationSplit = 'train' | 'eval' | 'verification';
|
|
792
|
+
|
|
793
|
+
export interface BenchmarkTaskDoc {
|
|
794
|
+
url: string;
|
|
795
|
+
title: string;
|
|
796
|
+
version: string;
|
|
797
|
+
content: string;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
export interface BenchmarkTaskDef {
|
|
801
|
+
id: string;
|
|
802
|
+
split: EvaluationSplit;
|
|
803
|
+
title: string;
|
|
804
|
+
ecosystem: string;
|
|
805
|
+
library: string;
|
|
806
|
+
targetVersion: string;
|
|
807
|
+
taskPrompt: string;
|
|
808
|
+
workspaceFiles: Record<string, string>;
|
|
809
|
+
docs: BenchmarkTaskDoc[];
|
|
810
|
+
/** Canonical documentation URL for the direct-docs-fetch web baseline */
|
|
811
|
+
docsUrl: string;
|
|
812
|
+
/** Optional pre-structured endpoints to index into DocOrbit for AST verification */
|
|
813
|
+
endpoints?: ApiEndpoint[];
|
|
814
|
+
/** Optional pre-structured pitfalls to index into DocOrbit for AST verification */
|
|
815
|
+
pitfalls?: Pitfall[];
|
|
816
|
+
/** Dedicated verification category if this is an intentional code flaw test */
|
|
817
|
+
verificationCategory?:
|
|
818
|
+
| 'wrong_endpoint'
|
|
819
|
+
| 'wrong_http_method'
|
|
820
|
+
| 'missing_required_parameter'
|
|
821
|
+
| 'deprecated_api'
|
|
822
|
+
| 'removed_api'
|
|
823
|
+
| 'version_mismatch'
|
|
824
|
+
| 'dynamic_ambiguous_code';
|
|
825
|
+
groundTruth: {
|
|
826
|
+
expectedVersion: string;
|
|
827
|
+
expectedApi: { method?: string; path?: string; symbol?: string; requiredParams?: string[] };
|
|
828
|
+
fatalPitfalls: string[];
|
|
829
|
+
validCode: string;
|
|
830
|
+
invalidCode: { snippet: string; expectedRule: string };
|
|
831
|
+
dynamicCode?: string;
|
|
832
|
+
};
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
export interface BenchmarkTaskResult {
|
|
836
|
+
strategy: AgentEvaluationStrategy;
|
|
837
|
+
taskId: string;
|
|
838
|
+
split: EvaluationSplit;
|
|
839
|
+
taskSuccess: boolean;
|
|
840
|
+
correctApiSelected: boolean;
|
|
841
|
+
correctVersionSelected: boolean;
|
|
842
|
+
retrievalPrecision: number;
|
|
843
|
+
retrievalRecall: number;
|
|
844
|
+
tokenUsage: number;
|
|
845
|
+
latencyMs: number;
|
|
846
|
+
toolCallsCount: number;
|
|
847
|
+
verificationCatches: number;
|
|
848
|
+
verificationFalsePositives: number;
|
|
849
|
+
insufficientEvidenceCount: number;
|
|
850
|
+
notes: string;
|
|
851
|
+
/** True when this result was produced by a simulated runner (no real network calls) */
|
|
852
|
+
isSimulation: boolean;
|
|
853
|
+
/** First 2000 chars of actual retrieved content for auditability; empty string for simulations */
|
|
854
|
+
rawRetrievedContent: string;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
export interface StrategyAggregateMetrics {
|
|
858
|
+
overallSuccessRate: number;
|
|
859
|
+
evalSuccessRate: number;
|
|
860
|
+
versionAccuracy: number;
|
|
861
|
+
meanPrecision: number;
|
|
862
|
+
meanRecall: number;
|
|
863
|
+
meanTokens: number;
|
|
864
|
+
medianTokens: number;
|
|
865
|
+
meanLatencyMs: number;
|
|
866
|
+
meanToolCalls: number;
|
|
867
|
+
totalVerificationCatches: number;
|
|
868
|
+
verificationCatchRate?: number;
|
|
869
|
+
falsePositives: number;
|
|
870
|
+
insufficientEvidenceRate: number;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
export interface BenchmarkSuiteReport {
|
|
874
|
+
timestamp: string;
|
|
875
|
+
totalTasks: number;
|
|
876
|
+
trainTasks: number;
|
|
877
|
+
evalTasks: number;
|
|
878
|
+
verificationTasks?: number;
|
|
879
|
+
byStrategy: Record<AgentEvaluationStrategy, StrategyAggregateMetrics>;
|
|
880
|
+
tasks: BenchmarkTaskResult[];
|
|
881
|
+
}
|