@harness-engineering/graph 0.4.3 → 0.6.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/README.md +50 -36
- package/dist/index.d.mts +622 -16
- package/dist/index.d.ts +622 -16
- package/dist/index.js +4546 -298
- package/dist/index.mjs +4526 -301
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
-
declare const NODE_TYPES: readonly ["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint", "requirement", "packed_summary"];
|
|
3
|
+
declare const NODE_TYPES: readonly ["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "execution_outcome", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint", "image_annotation", "requirement", "business_rule", "business_process", "business_concept", "business_term", "business_metric", "business_fact", "packed_summary"];
|
|
4
4
|
type NodeType = (typeof NODE_TYPES)[number];
|
|
5
|
-
declare const EDGE_TYPES: readonly ["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding", "requires", "verified_by", "tested_by", "caches"];
|
|
5
|
+
declare const EDGE_TYPES: readonly ["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "outcome_of", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding", "requires", "verified_by", "tested_by", "governs", "measures", "annotates", "caches"];
|
|
6
6
|
type EdgeType = (typeof EDGE_TYPES)[number];
|
|
7
7
|
declare const OBSERVABILITY_TYPES: ReadonlySet<NodeType>;
|
|
8
8
|
interface SourceLocation {
|
|
@@ -79,7 +79,7 @@ type GraphStabilityTier = 'static' | 'session' | 'ephemeral';
|
|
|
79
79
|
declare const NODE_STABILITY: Record<string, GraphStabilityTier>;
|
|
80
80
|
declare const GraphNodeSchema: z.ZodObject<{
|
|
81
81
|
id: z.ZodString;
|
|
82
|
-
type: z.ZodEnum<["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint", "requirement", "packed_summary"]>;
|
|
82
|
+
type: z.ZodEnum<["repository", "module", "file", "class", "interface", "function", "method", "variable", "adr", "decision", "learning", "failure", "issue", "document", "skill", "conversation", "commit", "build", "test_result", "execution_outcome", "span", "metric", "log", "layer", "pattern", "constraint", "violation", "design_token", "aesthetic_intent", "design_constraint", "image_annotation", "requirement", "business_rule", "business_process", "business_concept", "business_term", "business_metric", "business_fact", "packed_summary"]>;
|
|
83
83
|
name: z.ZodString;
|
|
84
84
|
path: z.ZodOptional<z.ZodString>;
|
|
85
85
|
location: z.ZodOptional<z.ZodObject<{
|
|
@@ -108,7 +108,7 @@ declare const GraphNodeSchema: z.ZodObject<{
|
|
|
108
108
|
lastModified: z.ZodOptional<z.ZodString>;
|
|
109
109
|
}, "strip", z.ZodTypeAny, {
|
|
110
110
|
id: string;
|
|
111
|
-
type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint" | "requirement" | "packed_summary";
|
|
111
|
+
type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "execution_outcome" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint" | "image_annotation" | "requirement" | "business_rule" | "business_process" | "business_concept" | "business_term" | "business_metric" | "business_fact" | "packed_summary";
|
|
112
112
|
name: string;
|
|
113
113
|
metadata: Record<string, unknown>;
|
|
114
114
|
path?: string | undefined;
|
|
@@ -125,7 +125,7 @@ declare const GraphNodeSchema: z.ZodObject<{
|
|
|
125
125
|
lastModified?: string | undefined;
|
|
126
126
|
}, {
|
|
127
127
|
id: string;
|
|
128
|
-
type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint" | "requirement" | "packed_summary";
|
|
128
|
+
type: "function" | "repository" | "module" | "file" | "class" | "interface" | "method" | "variable" | "adr" | "decision" | "learning" | "failure" | "issue" | "document" | "skill" | "conversation" | "commit" | "build" | "test_result" | "execution_outcome" | "span" | "metric" | "log" | "layer" | "pattern" | "constraint" | "violation" | "design_token" | "aesthetic_intent" | "design_constraint" | "image_annotation" | "requirement" | "business_rule" | "business_process" | "business_concept" | "business_term" | "business_metric" | "business_fact" | "packed_summary";
|
|
129
129
|
name: string;
|
|
130
130
|
metadata: Record<string, unknown>;
|
|
131
131
|
path?: string | undefined;
|
|
@@ -144,17 +144,17 @@ declare const GraphNodeSchema: z.ZodObject<{
|
|
|
144
144
|
declare const GraphEdgeSchema: z.ZodObject<{
|
|
145
145
|
from: z.ZodString;
|
|
146
146
|
to: z.ZodString;
|
|
147
|
-
type: z.ZodEnum<["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding", "requires", "verified_by", "tested_by", "caches"]>;
|
|
147
|
+
type: z.ZodEnum<["contains", "imports", "calls", "implements", "inherits", "references", "applies_to", "caused_by", "resolved_by", "documents", "violates", "specifies", "decided", "co_changes_with", "triggered_by", "failed_in", "outcome_of", "executed_by", "measured_by", "uses_token", "declares_intent", "violates_design", "platform_binding", "requires", "verified_by", "tested_by", "governs", "measures", "annotates", "caches"]>;
|
|
148
148
|
confidence: z.ZodOptional<z.ZodNumber>;
|
|
149
149
|
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
150
150
|
}, "strip", z.ZodTypeAny, {
|
|
151
|
-
type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding" | "requires" | "verified_by" | "tested_by" | "caches";
|
|
151
|
+
type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "outcome_of" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding" | "requires" | "verified_by" | "tested_by" | "governs" | "measures" | "annotates" | "caches";
|
|
152
152
|
from: string;
|
|
153
153
|
to: string;
|
|
154
154
|
metadata?: Record<string, unknown> | undefined;
|
|
155
155
|
confidence?: number | undefined;
|
|
156
156
|
}, {
|
|
157
|
-
type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding" | "requires" | "verified_by" | "tested_by" | "caches";
|
|
157
|
+
type: "contains" | "imports" | "calls" | "implements" | "inherits" | "references" | "applies_to" | "caused_by" | "resolved_by" | "documents" | "violates" | "specifies" | "decided" | "co_changes_with" | "triggered_by" | "failed_in" | "outcome_of" | "executed_by" | "measured_by" | "uses_token" | "declares_intent" | "violates_design" | "platform_binding" | "requires" | "verified_by" | "tested_by" | "governs" | "measures" | "annotates" | "caches";
|
|
158
158
|
from: string;
|
|
159
159
|
to: string;
|
|
160
160
|
metadata?: Record<string, unknown> | undefined;
|
|
@@ -252,7 +252,17 @@ interface SerializedGraph {
|
|
|
252
252
|
readonly edges: readonly GraphEdge[];
|
|
253
253
|
}
|
|
254
254
|
declare function saveGraph(dirPath: string, nodes: readonly GraphNode[], edges: readonly GraphEdge[]): Promise<void>;
|
|
255
|
-
|
|
255
|
+
type LoadGraphResult = {
|
|
256
|
+
status: 'loaded';
|
|
257
|
+
graph: SerializedGraph;
|
|
258
|
+
} | {
|
|
259
|
+
status: 'not_found';
|
|
260
|
+
} | {
|
|
261
|
+
status: 'schema_mismatch';
|
|
262
|
+
found: number;
|
|
263
|
+
expected: number;
|
|
264
|
+
};
|
|
265
|
+
declare function loadGraph(dirPath: string): Promise<LoadGraphResult>;
|
|
256
266
|
|
|
257
267
|
/**
|
|
258
268
|
* Minimal PackedEnvelope shape -- avoids circular dep on @harness-engineering/core.
|
|
@@ -322,8 +332,8 @@ interface ImpactGroups {
|
|
|
322
332
|
declare function groupNodesByImpact(nodes: readonly GraphNode[], excludeId?: string): ImpactGroups;
|
|
323
333
|
|
|
324
334
|
/**
|
|
325
|
-
* Ingests
|
|
326
|
-
*
|
|
335
|
+
* Ingests source files into the graph via regex-based parsing.
|
|
336
|
+
* Supports TypeScript, JavaScript, Python, Go, Rust, and Java.
|
|
327
337
|
*/
|
|
328
338
|
declare class CodeIngestor {
|
|
329
339
|
private readonly store;
|
|
@@ -333,12 +343,22 @@ declare class CodeIngestor {
|
|
|
333
343
|
private trackCallable;
|
|
334
344
|
private findSourceFiles;
|
|
335
345
|
private extractSymbols;
|
|
346
|
+
private processSymbolLine;
|
|
347
|
+
private matchFunction;
|
|
336
348
|
private tryExtractFunction;
|
|
349
|
+
private matchClass;
|
|
337
350
|
private tryExtractClass;
|
|
351
|
+
private matchInterface;
|
|
338
352
|
private tryExtractInterface;
|
|
353
|
+
/**
|
|
354
|
+
* Enter an impl block (Rust) or Java class body — sets class context without creating a node.
|
|
355
|
+
*/
|
|
356
|
+
private tryEnterImplBlock;
|
|
339
357
|
/** Update brace tracking; returns true when line is consumed (class ended or tracked). */
|
|
340
358
|
private updateClassContext;
|
|
359
|
+
private matchMethod;
|
|
341
360
|
private tryExtractMethod;
|
|
361
|
+
private matchVariable;
|
|
342
362
|
private tryExtractVariable;
|
|
343
363
|
/**
|
|
344
364
|
* Find the closing brace for a construct starting at the given line.
|
|
@@ -346,11 +366,21 @@ declare class CodeIngestor {
|
|
|
346
366
|
*/
|
|
347
367
|
private findClosingBrace;
|
|
348
368
|
/**
|
|
349
|
-
*
|
|
369
|
+
* Find the end of an indentation-based block (Python).
|
|
370
|
+
* The block ends when a subsequent non-empty line has indentation <= the starting line.
|
|
371
|
+
*/
|
|
372
|
+
private findEndOfIndentBlock;
|
|
373
|
+
/**
|
|
374
|
+
* Update class context for Python using indentation tracking.
|
|
375
|
+
*/
|
|
376
|
+
private updatePythonClassContext;
|
|
377
|
+
/**
|
|
378
|
+
* Scan a file for identifiers matching known callable names,
|
|
350
379
|
* then create file-to-file "calls" edges. Uses regex heuristic (not AST).
|
|
351
380
|
*/
|
|
352
|
-
private
|
|
381
|
+
private extractCallsEdgesForFile;
|
|
353
382
|
private extractImports;
|
|
383
|
+
private extractImportPaths;
|
|
354
384
|
private resolveImportPath;
|
|
355
385
|
private computeCyclomaticComplexity;
|
|
356
386
|
private computeMaxNesting;
|
|
@@ -361,7 +391,7 @@ declare class CodeIngestor {
|
|
|
361
391
|
* linking requirement nodes to the annotated files.
|
|
362
392
|
* Format: // @req <feature-name>#<index>
|
|
363
393
|
*/
|
|
364
|
-
private
|
|
394
|
+
private extractReqAnnotationsForFile;
|
|
365
395
|
}
|
|
366
396
|
|
|
367
397
|
type GitRunner = (rootDir: string, args: string[]) => Promise<string>;
|
|
@@ -417,6 +447,34 @@ declare class KnowledgeIngestor {
|
|
|
417
447
|
private findMarkdownFiles;
|
|
418
448
|
}
|
|
419
449
|
|
|
450
|
+
declare class BusinessKnowledgeIngestor {
|
|
451
|
+
private readonly store;
|
|
452
|
+
constructor(store: GraphStore);
|
|
453
|
+
ingest(knowledgeDir: string): Promise<IngestResult>;
|
|
454
|
+
private createNodes;
|
|
455
|
+
private parseAndAddNode;
|
|
456
|
+
private createEdges;
|
|
457
|
+
private linkToNodes;
|
|
458
|
+
private linkToBusinessNodes;
|
|
459
|
+
private findMarkdownFiles;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Ingests ADR files from docs/knowledge/decisions/ into the knowledge graph.
|
|
464
|
+
*
|
|
465
|
+
* Parses YAML frontmatter with fields: number, title, date, status, tier,
|
|
466
|
+
* source, supersedes. Creates `decision` type graph nodes with `decided`
|
|
467
|
+
* edges to code nodes mentioned in the body.
|
|
468
|
+
*/
|
|
469
|
+
declare class DecisionIngestor {
|
|
470
|
+
private readonly store;
|
|
471
|
+
constructor(store: GraphStore);
|
|
472
|
+
ingest(decisionsDir: string): Promise<IngestResult>;
|
|
473
|
+
private parseFrontmatter;
|
|
474
|
+
private linkToCode;
|
|
475
|
+
private findDecisionFiles;
|
|
476
|
+
}
|
|
477
|
+
|
|
420
478
|
declare class RequirementIngestor {
|
|
421
479
|
private readonly store;
|
|
422
480
|
constructor(store: GraphStore);
|
|
@@ -454,6 +512,372 @@ declare class RequirementIngestor {
|
|
|
454
512
|
private linkByKeywordOverlap;
|
|
455
513
|
}
|
|
456
514
|
|
|
515
|
+
type DriftClassification = 'new' | 'drifted' | 'stale' | 'contradicting';
|
|
516
|
+
interface KnowledgeSnapshotEntry {
|
|
517
|
+
readonly id: string;
|
|
518
|
+
readonly type: NodeType;
|
|
519
|
+
readonly contentHash: string;
|
|
520
|
+
readonly source: string;
|
|
521
|
+
readonly name: string;
|
|
522
|
+
}
|
|
523
|
+
interface KnowledgeSnapshot {
|
|
524
|
+
readonly entries: readonly KnowledgeSnapshotEntry[];
|
|
525
|
+
readonly timestamp: string;
|
|
526
|
+
}
|
|
527
|
+
interface DriftFinding {
|
|
528
|
+
readonly entryId: string;
|
|
529
|
+
readonly classification: DriftClassification;
|
|
530
|
+
readonly current?: KnowledgeSnapshotEntry;
|
|
531
|
+
readonly fresh?: KnowledgeSnapshotEntry;
|
|
532
|
+
readonly severity: 'critical' | 'high' | 'medium' | 'low';
|
|
533
|
+
}
|
|
534
|
+
interface DriftResult {
|
|
535
|
+
readonly findings: readonly DriftFinding[];
|
|
536
|
+
readonly driftScore: number;
|
|
537
|
+
readonly summary: {
|
|
538
|
+
readonly new: number;
|
|
539
|
+
readonly drifted: number;
|
|
540
|
+
readonly stale: number;
|
|
541
|
+
readonly contradicting: number;
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
interface DriftDetector {
|
|
545
|
+
detect(current: KnowledgeSnapshot, fresh: KnowledgeSnapshot): DriftResult;
|
|
546
|
+
}
|
|
547
|
+
declare class StructuralDriftDetector implements DriftDetector {
|
|
548
|
+
detect(current: KnowledgeSnapshot, fresh: KnowledgeSnapshot): DriftResult;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* Knowledge Staging Aggregator
|
|
553
|
+
*
|
|
554
|
+
* Merges extraction results from multiple sources (code extractors, linkers, diagrams),
|
|
555
|
+
* deduplicates by contentHash, writes staged JSONL, and generates gap reports.
|
|
556
|
+
*/
|
|
557
|
+
|
|
558
|
+
interface StagedEntry {
|
|
559
|
+
readonly id: string;
|
|
560
|
+
readonly source: 'extractor' | 'linker' | 'diagram';
|
|
561
|
+
readonly extractorName?: string;
|
|
562
|
+
readonly nodeType: NodeType;
|
|
563
|
+
readonly name: string;
|
|
564
|
+
readonly confidence: number;
|
|
565
|
+
readonly contentHash: string;
|
|
566
|
+
readonly timestamp: string;
|
|
567
|
+
}
|
|
568
|
+
interface GapEntry {
|
|
569
|
+
readonly nodeId: string;
|
|
570
|
+
readonly name: string;
|
|
571
|
+
readonly nodeType: NodeType;
|
|
572
|
+
readonly source: string;
|
|
573
|
+
readonly hasContent: boolean;
|
|
574
|
+
}
|
|
575
|
+
interface DomainCoverage {
|
|
576
|
+
readonly domain: string;
|
|
577
|
+
readonly entryCount: number;
|
|
578
|
+
readonly extractedCount: number;
|
|
579
|
+
readonly gapCount: number;
|
|
580
|
+
readonly gapEntries: readonly GapEntry[];
|
|
581
|
+
}
|
|
582
|
+
interface GapReport {
|
|
583
|
+
readonly domains: readonly DomainCoverage[];
|
|
584
|
+
readonly totalEntries: number;
|
|
585
|
+
readonly totalExtracted: number;
|
|
586
|
+
readonly totalGaps: number;
|
|
587
|
+
readonly generatedAt: string;
|
|
588
|
+
}
|
|
589
|
+
interface AggregateResult {
|
|
590
|
+
readonly staged: number;
|
|
591
|
+
}
|
|
592
|
+
declare class KnowledgeStagingAggregator {
|
|
593
|
+
private readonly projectDir;
|
|
594
|
+
constructor(projectDir: string);
|
|
595
|
+
aggregate(extractorResults: readonly StagedEntry[], linkerResults: readonly StagedEntry[], diagramResults: readonly StagedEntry[]): Promise<AggregateResult>;
|
|
596
|
+
private extractDocName;
|
|
597
|
+
generateGapReport(knowledgeDir: string, store?: GraphStore): Promise<GapReport>;
|
|
598
|
+
writeGapReport(report: GapReport): Promise<void>;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
interface AnalysisRequest {
|
|
602
|
+
prompt: string;
|
|
603
|
+
systemPrompt?: string;
|
|
604
|
+
responseSchema: unknown;
|
|
605
|
+
model?: string;
|
|
606
|
+
maxTokens?: number;
|
|
607
|
+
}
|
|
608
|
+
interface AnalysisResponse<T> {
|
|
609
|
+
result: T;
|
|
610
|
+
tokenUsage: {
|
|
611
|
+
inputTokens: number;
|
|
612
|
+
outputTokens: number;
|
|
613
|
+
totalTokens: number;
|
|
614
|
+
};
|
|
615
|
+
model: string;
|
|
616
|
+
latencyMs: number;
|
|
617
|
+
}
|
|
618
|
+
interface AnalysisProvider {
|
|
619
|
+
analyze<T>(request: AnalysisRequest): Promise<AnalysisResponse<T>>;
|
|
620
|
+
}
|
|
621
|
+
interface DetectedElement {
|
|
622
|
+
readonly type: string;
|
|
623
|
+
readonly label: string;
|
|
624
|
+
readonly confidence: number;
|
|
625
|
+
}
|
|
626
|
+
interface ImageAnalysisResult {
|
|
627
|
+
readonly description: string;
|
|
628
|
+
readonly detectedElements: readonly DetectedElement[];
|
|
629
|
+
readonly extractedText: readonly string[];
|
|
630
|
+
readonly designPatterns: readonly string[];
|
|
631
|
+
readonly accessibilityNotes: readonly string[];
|
|
632
|
+
}
|
|
633
|
+
interface ImageAnalysisExtractorOptions {
|
|
634
|
+
readonly analysisProvider: AnalysisProvider;
|
|
635
|
+
readonly maxFileSizeMB?: number;
|
|
636
|
+
}
|
|
637
|
+
declare class ImageAnalysisExtractor {
|
|
638
|
+
private readonly provider;
|
|
639
|
+
/** Maximum file size in bytes. Reserved for future file-size filtering. */
|
|
640
|
+
readonly maxFileSizeBytes: number;
|
|
641
|
+
constructor(options: ImageAnalysisExtractorOptions);
|
|
642
|
+
analyze(store: GraphStore, imagePaths: readonly string[]): Promise<IngestResult>;
|
|
643
|
+
/** Analyze a single image and add annotation + concept nodes to the store. */
|
|
644
|
+
private processImage;
|
|
645
|
+
/** Link annotation to its source file node if it exists. Returns 1 if linked, 0 otherwise. */
|
|
646
|
+
private linkToFileNode;
|
|
647
|
+
/** Create a business_concept node for a design pattern and link it. Returns edges added. */
|
|
648
|
+
private addDesignPatternConcept;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
type ConflictType = 'value_mismatch' | 'definition_conflict' | 'status_divergence' | 'temporal_conflict';
|
|
652
|
+
interface ContradictionEntry {
|
|
653
|
+
readonly nodeId: string;
|
|
654
|
+
readonly source: string;
|
|
655
|
+
readonly name: string;
|
|
656
|
+
readonly content: string;
|
|
657
|
+
readonly lastModified?: string | undefined;
|
|
658
|
+
}
|
|
659
|
+
interface Contradiction {
|
|
660
|
+
readonly id: string;
|
|
661
|
+
readonly entityA: ContradictionEntry;
|
|
662
|
+
readonly entityB: ContradictionEntry;
|
|
663
|
+
readonly similarity: number;
|
|
664
|
+
readonly conflictType: ConflictType;
|
|
665
|
+
readonly severity: 'critical' | 'high' | 'medium';
|
|
666
|
+
readonly description: string;
|
|
667
|
+
}
|
|
668
|
+
interface ContradictionResult {
|
|
669
|
+
readonly contradictions: readonly Contradiction[];
|
|
670
|
+
readonly sourcePairCounts: Record<string, number>;
|
|
671
|
+
readonly totalChecked: number;
|
|
672
|
+
}
|
|
673
|
+
declare class ContradictionDetector {
|
|
674
|
+
detect(store: GraphStore): ContradictionResult;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
interface DomainCoverageScore {
|
|
678
|
+
readonly domain: string;
|
|
679
|
+
readonly score: number;
|
|
680
|
+
readonly knowledgeEntries: number;
|
|
681
|
+
readonly codeEntities: number;
|
|
682
|
+
readonly linkedEntities: number;
|
|
683
|
+
readonly unlinkedEntities: number;
|
|
684
|
+
readonly sourceBreakdown: Record<string, number>;
|
|
685
|
+
readonly grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
686
|
+
}
|
|
687
|
+
interface CoverageReport {
|
|
688
|
+
readonly domains: readonly DomainCoverageScore[];
|
|
689
|
+
readonly overallScore: number;
|
|
690
|
+
readonly overallGrade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
691
|
+
readonly generatedAt: string;
|
|
692
|
+
}
|
|
693
|
+
declare class CoverageScorer {
|
|
694
|
+
score(store: GraphStore): CoverageReport;
|
|
695
|
+
private domainFromPath;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
/**
|
|
699
|
+
* Knowledge Document Materializer
|
|
700
|
+
*
|
|
701
|
+
* Takes GapEntry[] from the differential gap report and creates
|
|
702
|
+
* docs/knowledge/{domain}/*.md files from graph nodes.
|
|
703
|
+
* Frontmatter is compatible with BusinessKnowledgeIngestor's parseFrontmatter().
|
|
704
|
+
*/
|
|
705
|
+
|
|
706
|
+
interface MaterializeOptions {
|
|
707
|
+
readonly projectDir: string;
|
|
708
|
+
readonly dryRun: boolean;
|
|
709
|
+
readonly maxDocs?: number;
|
|
710
|
+
}
|
|
711
|
+
interface MaterializeResult {
|
|
712
|
+
readonly created: readonly MaterializedDoc[];
|
|
713
|
+
readonly skipped: readonly SkippedEntry[];
|
|
714
|
+
}
|
|
715
|
+
interface MaterializedDoc {
|
|
716
|
+
readonly filePath: string;
|
|
717
|
+
readonly nodeId: string;
|
|
718
|
+
readonly domain: string;
|
|
719
|
+
readonly name: string;
|
|
720
|
+
}
|
|
721
|
+
interface SkippedEntry {
|
|
722
|
+
readonly nodeId: string;
|
|
723
|
+
readonly name: string;
|
|
724
|
+
readonly reason: 'no_content' | 'no_domain' | 'already_documented' | 'dry_run' | 'cap_reached';
|
|
725
|
+
}
|
|
726
|
+
declare class KnowledgeDocMaterializer {
|
|
727
|
+
private readonly store;
|
|
728
|
+
constructor(store: GraphStore);
|
|
729
|
+
materialize(gapEntries: readonly GapEntry[], options: MaterializeOptions): Promise<MaterializeResult>;
|
|
730
|
+
private resolveEntry;
|
|
731
|
+
inferDomain(node: GraphNode): string | null;
|
|
732
|
+
generateFilename(name: string): string;
|
|
733
|
+
resolveCollision(dir: string, basename: string): Promise<string>;
|
|
734
|
+
formatDoc(node: GraphNode, domain: string): string;
|
|
735
|
+
/** Check if a doc with a matching title already exists in the domain directory. */
|
|
736
|
+
private hasExistingDoc;
|
|
737
|
+
mapNodeType(node: GraphNode): NodeType;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* KnowledgePipelineRunner — 4-phase convergence loop for knowledge extraction,
|
|
742
|
+
* reconciliation, drift detection, and remediation.
|
|
743
|
+
*
|
|
744
|
+
* Phases:
|
|
745
|
+
* 1. EXTRACT — Run code signal extractors, diagram parsers, image analysis, business knowledge ingestor, linker
|
|
746
|
+
* 2. RECONCILE — Compare pre-extraction graph snapshot against post-extraction snapshot + cross-source contradiction detection
|
|
747
|
+
* 3. DETECT — Classify findings by severity, generate gap report + coverage scoring
|
|
748
|
+
* 4. REMEDIATE — Apply safe fixes, converge (only with `fix: true`)
|
|
749
|
+
*/
|
|
750
|
+
|
|
751
|
+
interface KnowledgePipelineOptions {
|
|
752
|
+
readonly projectDir: string;
|
|
753
|
+
readonly fix: boolean;
|
|
754
|
+
readonly ci: boolean;
|
|
755
|
+
readonly domain?: string;
|
|
756
|
+
readonly graphDir?: string;
|
|
757
|
+
readonly maxIterations?: number;
|
|
758
|
+
readonly analyzeImages?: boolean;
|
|
759
|
+
readonly analysisProvider?: AnalysisProvider;
|
|
760
|
+
readonly imagePaths?: readonly string[];
|
|
761
|
+
}
|
|
762
|
+
interface ExtractionCounts {
|
|
763
|
+
readonly codeSignals: number;
|
|
764
|
+
readonly diagrams: number;
|
|
765
|
+
readonly linkerFacts: number;
|
|
766
|
+
readonly businessKnowledge: number;
|
|
767
|
+
readonly decisions: number;
|
|
768
|
+
readonly images: number;
|
|
769
|
+
}
|
|
770
|
+
interface KnowledgePipelineResult {
|
|
771
|
+
readonly verdict: 'pass' | 'warn' | 'fail';
|
|
772
|
+
readonly driftScore: number;
|
|
773
|
+
readonly iterations: number;
|
|
774
|
+
readonly findings: DriftResult['summary'];
|
|
775
|
+
readonly extraction: ExtractionCounts;
|
|
776
|
+
readonly gaps: GapReport;
|
|
777
|
+
readonly remediations: readonly string[];
|
|
778
|
+
readonly contradictions: ContradictionResult;
|
|
779
|
+
readonly coverage: CoverageReport;
|
|
780
|
+
readonly materialization?: MaterializeResult;
|
|
781
|
+
}
|
|
782
|
+
declare class KnowledgePipelineRunner {
|
|
783
|
+
private readonly store;
|
|
784
|
+
constructor(store: GraphStore);
|
|
785
|
+
run(options: KnowledgePipelineOptions): Promise<KnowledgePipelineResult>;
|
|
786
|
+
/** Run the remediation convergence loop; returns iteration count and accumulated materialization. */
|
|
787
|
+
private runRemediationLoop;
|
|
788
|
+
/** Assemble the final pipeline result. */
|
|
789
|
+
private buildResult;
|
|
790
|
+
private extract;
|
|
791
|
+
private buildSnapshot;
|
|
792
|
+
private reconcile;
|
|
793
|
+
private detect;
|
|
794
|
+
private remediate;
|
|
795
|
+
private stageNewFindings;
|
|
796
|
+
private classifySource;
|
|
797
|
+
private computeVerdict;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Shared types for diagram format parsers.
|
|
802
|
+
*/
|
|
803
|
+
interface DiagramEntity {
|
|
804
|
+
readonly id: string;
|
|
805
|
+
readonly label: string;
|
|
806
|
+
readonly type?: string;
|
|
807
|
+
}
|
|
808
|
+
interface DiagramRelationship {
|
|
809
|
+
readonly from: string;
|
|
810
|
+
readonly to: string;
|
|
811
|
+
readonly label?: string;
|
|
812
|
+
}
|
|
813
|
+
interface DiagramParseResult {
|
|
814
|
+
readonly entities: readonly DiagramEntity[];
|
|
815
|
+
readonly relationships: readonly DiagramRelationship[];
|
|
816
|
+
readonly metadata: {
|
|
817
|
+
readonly format: 'mermaid' | 'd2' | 'plantuml';
|
|
818
|
+
readonly diagramType: string;
|
|
819
|
+
};
|
|
820
|
+
}
|
|
821
|
+
interface DiagramFormatParser {
|
|
822
|
+
canParse(content: string, ext: string): boolean;
|
|
823
|
+
parse(content: string, filePath: string): DiagramParseResult;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
/**
|
|
827
|
+
* Mermaid diagram format parser.
|
|
828
|
+
*
|
|
829
|
+
* Handles .mmd and .mermaid files, supporting flowchart and sequence diagram types.
|
|
830
|
+
*/
|
|
831
|
+
|
|
832
|
+
declare class MermaidParser implements DiagramFormatParser {
|
|
833
|
+
canParse(_content: string, ext: string): boolean;
|
|
834
|
+
parse(content: string, _filePath: string): DiagramParseResult;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
/**
|
|
838
|
+
* D2 diagram format parser.
|
|
839
|
+
*
|
|
840
|
+
* Handles .d2 files, extracting entities and connections from D2 architecture diagrams.
|
|
841
|
+
*/
|
|
842
|
+
|
|
843
|
+
declare class D2Parser implements DiagramFormatParser {
|
|
844
|
+
canParse(_content: string, ext: string): boolean;
|
|
845
|
+
parse(content: string, _filePath: string): DiagramParseResult;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
/**
|
|
849
|
+
* PlantUML diagram format parser.
|
|
850
|
+
*
|
|
851
|
+
* Handles .puml and .plantuml files, supporting class and component diagram types.
|
|
852
|
+
*/
|
|
853
|
+
|
|
854
|
+
declare class PlantUmlParser implements DiagramFormatParser {
|
|
855
|
+
canParse(_content: string, ext: string): boolean;
|
|
856
|
+
parse(content: string, _filePath: string): DiagramParseResult;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* Diagram-as-code parser orchestrator.
|
|
861
|
+
*
|
|
862
|
+
* Delegates to format-specific parsers (Mermaid, D2, PlantUML) and maps
|
|
863
|
+
* extracted entities/relationships to the knowledge graph.
|
|
864
|
+
*
|
|
865
|
+
* Format-specific implementations live in ./parsers/.
|
|
866
|
+
*/
|
|
867
|
+
|
|
868
|
+
declare class DiagramParser {
|
|
869
|
+
private readonly store;
|
|
870
|
+
private readonly parsers;
|
|
871
|
+
constructor(store: GraphStore);
|
|
872
|
+
parse(content: string, filePath: string): DiagramParseResult;
|
|
873
|
+
ingest(projectDir: string): Promise<IngestResult>;
|
|
874
|
+
/** Map diagram entities to business_concept graph nodes. */
|
|
875
|
+
private addEntityNodes;
|
|
876
|
+
/** Map diagram relationships to references graph edges. */
|
|
877
|
+
private addRelationshipEdges;
|
|
878
|
+
private findDiagramFiles;
|
|
879
|
+
}
|
|
880
|
+
|
|
457
881
|
type HttpClient = (url: string, options?: {
|
|
458
882
|
headers?: Record<string, string>;
|
|
459
883
|
}) => Promise<{
|
|
@@ -467,6 +891,7 @@ interface ConnectorConfig {
|
|
|
467
891
|
schedule?: string;
|
|
468
892
|
lookbackDays?: number;
|
|
469
893
|
filters?: Record<string, unknown>;
|
|
894
|
+
maxContentLength?: number;
|
|
470
895
|
[key: string]: unknown;
|
|
471
896
|
}
|
|
472
897
|
interface GraphConnector {
|
|
@@ -506,6 +931,7 @@ declare class JiraConnector implements GraphConnector {
|
|
|
506
931
|
ingest(store: GraphStore, config: ConnectorConfig): Promise<IngestResult>;
|
|
507
932
|
private fetchAllIssues;
|
|
508
933
|
private processIssue;
|
|
934
|
+
private fetchComments;
|
|
509
935
|
}
|
|
510
936
|
|
|
511
937
|
declare class SlackConnector implements GraphConnector {
|
|
@@ -515,6 +941,7 @@ declare class SlackConnector implements GraphConnector {
|
|
|
515
941
|
constructor(httpClient?: HttpClient);
|
|
516
942
|
ingest(store: GraphStore, config: ConnectorConfig): Promise<IngestResult>;
|
|
517
943
|
private processChannel;
|
|
944
|
+
private fetchThreadReplies;
|
|
518
945
|
}
|
|
519
946
|
|
|
520
947
|
declare class ConfluenceConnector implements GraphConnector {
|
|
@@ -537,6 +964,30 @@ declare class CIConnector implements GraphConnector {
|
|
|
537
964
|
private fetchAndIngestRuns;
|
|
538
965
|
}
|
|
539
966
|
|
|
967
|
+
declare class FigmaConnector implements GraphConnector {
|
|
968
|
+
readonly name = "figma";
|
|
969
|
+
readonly source = "figma";
|
|
970
|
+
private readonly httpClient;
|
|
971
|
+
constructor(httpClient?: HttpClient);
|
|
972
|
+
ingest(store: GraphStore, config: ConnectorConfig): Promise<IngestResult>;
|
|
973
|
+
private processFile;
|
|
974
|
+
private ingestStyles;
|
|
975
|
+
private processStyle;
|
|
976
|
+
private ingestComponents;
|
|
977
|
+
private processComponent;
|
|
978
|
+
private addComponentIntent;
|
|
979
|
+
private addComponentConstraint;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
declare class MiroConnector implements GraphConnector {
|
|
983
|
+
readonly name = "miro";
|
|
984
|
+
readonly source = "miro";
|
|
985
|
+
private readonly httpClient;
|
|
986
|
+
constructor(httpClient?: HttpClient);
|
|
987
|
+
ingest(store: GraphStore, config: ConnectorConfig): Promise<IngestResult>;
|
|
988
|
+
private processBoard;
|
|
989
|
+
}
|
|
990
|
+
|
|
540
991
|
interface FusionResult {
|
|
541
992
|
readonly nodeId: string;
|
|
542
993
|
readonly node: GraphNode;
|
|
@@ -999,6 +1450,161 @@ declare class GraphConstraintAdapter {
|
|
|
999
1450
|
private resolveLayer;
|
|
1000
1451
|
}
|
|
1001
1452
|
|
|
1453
|
+
/** Languages supported by the code signal extractors. */
|
|
1454
|
+
type Language = 'typescript' | 'javascript' | 'python' | 'go' | 'rust' | 'java';
|
|
1455
|
+
/**
|
|
1456
|
+
* A single business-signal extraction record.
|
|
1457
|
+
* Written to JSONL and used to create provisional graph nodes.
|
|
1458
|
+
*/
|
|
1459
|
+
interface ExtractionRecord {
|
|
1460
|
+
/** Deterministic ID: `extracted:<extractor>:<hash(filePath+':'+patternKey)>` */
|
|
1461
|
+
readonly id: string;
|
|
1462
|
+
/** Which extractor produced this record. */
|
|
1463
|
+
readonly extractor: string;
|
|
1464
|
+
/** Source language of the file. */
|
|
1465
|
+
readonly language: Language;
|
|
1466
|
+
/** File path relative to project root. */
|
|
1467
|
+
readonly filePath: string;
|
|
1468
|
+
/** Start line of the extracted pattern (1-based). */
|
|
1469
|
+
readonly line: number;
|
|
1470
|
+
/** Graph node type this maps to. */
|
|
1471
|
+
readonly nodeType: NodeType;
|
|
1472
|
+
/** Human-readable label for the extracted fact. */
|
|
1473
|
+
readonly name: string;
|
|
1474
|
+
/** Raw extracted text. */
|
|
1475
|
+
readonly content: string;
|
|
1476
|
+
/** Extraction confidence (0.0-1.0). */
|
|
1477
|
+
readonly confidence: number;
|
|
1478
|
+
/** Extractor-specific metadata. */
|
|
1479
|
+
readonly metadata: Record<string, unknown>;
|
|
1480
|
+
}
|
|
1481
|
+
/**
|
|
1482
|
+
* Interface for pluggable code signal extractors.
|
|
1483
|
+
* Each extractor scans file content and returns extraction records.
|
|
1484
|
+
*/
|
|
1485
|
+
interface SignalExtractor {
|
|
1486
|
+
/** Unique extractor identifier (e.g. 'test-descriptions'). */
|
|
1487
|
+
readonly name: string;
|
|
1488
|
+
/** File extensions this extractor can process. */
|
|
1489
|
+
readonly supportedExtensions: readonly string[];
|
|
1490
|
+
/** Extract signals from a single file's content. */
|
|
1491
|
+
extract(content: string, filePath: string, language: Language): ExtractionRecord[];
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
/** Detect language from a file path. Returns undefined if unsupported. */
|
|
1495
|
+
declare function detectLanguage(filePath: string): Language | undefined;
|
|
1496
|
+
/**
|
|
1497
|
+
* Orchestrates code signal extraction across a project.
|
|
1498
|
+
* Walks files, dispatches to registered extractors, writes JSONL,
|
|
1499
|
+
* persists to graph, and handles stale detection.
|
|
1500
|
+
*/
|
|
1501
|
+
declare class ExtractionRunner {
|
|
1502
|
+
private readonly extractors;
|
|
1503
|
+
constructor(extractors: readonly SignalExtractor[]);
|
|
1504
|
+
/**
|
|
1505
|
+
* Run all extractors against a project directory.
|
|
1506
|
+
* @param projectDir - Project root directory
|
|
1507
|
+
* @param store - GraphStore for node/edge persistence
|
|
1508
|
+
* @param outputDir - Directory for JSONL output (e.g. .harness/knowledge/extracted/)
|
|
1509
|
+
*/
|
|
1510
|
+
run(projectDir: string, store: GraphStore, outputDir: string): Promise<IngestResult>;
|
|
1511
|
+
/** Write extraction records to JSONL file. */
|
|
1512
|
+
writeJsonl(records: readonly ExtractionRecord[], outputDir: string, extractorName: string): Promise<void>;
|
|
1513
|
+
/** Create or update a graph node from an extraction record. */
|
|
1514
|
+
private persistRecord;
|
|
1515
|
+
/**
|
|
1516
|
+
* Mark nodes from previous extractions that are no longer present as stale.
|
|
1517
|
+
* Returns the number of nodes marked stale.
|
|
1518
|
+
*/
|
|
1519
|
+
markStale(store: GraphStore, currentIds: Set<string>): number;
|
|
1520
|
+
/** Recursively find source files, skipping common non-source directories. */
|
|
1521
|
+
findSourceFiles(dir: string): Promise<string[]>;
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
/**
|
|
1525
|
+
* Extracts business rules from test descriptions.
|
|
1526
|
+
* Finds describe/it/test blocks (TS/JS), test_ functions (Python),
|
|
1527
|
+
* Test* functions + t.Run subtests (Go), #[test] fns (Rust),
|
|
1528
|
+
* @Test + @DisplayName (Java).
|
|
1529
|
+
*/
|
|
1530
|
+
declare class TestDescriptionExtractor implements SignalExtractor {
|
|
1531
|
+
readonly name = "test-descriptions";
|
|
1532
|
+
readonly supportedExtensions: string[];
|
|
1533
|
+
extract(content: string, filePath: string, language: Language): ExtractionRecord[];
|
|
1534
|
+
private extractJsTs;
|
|
1535
|
+
private extractPython;
|
|
1536
|
+
private extractGo;
|
|
1537
|
+
private extractRust;
|
|
1538
|
+
private extractJava;
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
/**
|
|
1542
|
+
* Extracts domain vocabulary from enum and constant definitions.
|
|
1543
|
+
* Finds enum declarations (all langs), as const objects (TS),
|
|
1544
|
+
* Object.freeze (JS), StrEnum/IntEnum (Python), iota (Go).
|
|
1545
|
+
*/
|
|
1546
|
+
declare class EnumConstantExtractor implements SignalExtractor {
|
|
1547
|
+
readonly name = "enum-constants";
|
|
1548
|
+
readonly supportedExtensions: string[];
|
|
1549
|
+
extract(content: string, filePath: string, language: Language): ExtractionRecord[];
|
|
1550
|
+
private extractTypeScript;
|
|
1551
|
+
private extractJavaScript;
|
|
1552
|
+
private extractPython;
|
|
1553
|
+
private extractGo;
|
|
1554
|
+
private extractRust;
|
|
1555
|
+
private extractJava;
|
|
1556
|
+
private collectEnumMembers;
|
|
1557
|
+
private collectObjectKeys;
|
|
1558
|
+
private findClosingBrace;
|
|
1559
|
+
private collectPythonEnumMembers;
|
|
1560
|
+
private collectRustEnumVariants;
|
|
1561
|
+
private collectJavaEnumConstants;
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
/**
|
|
1565
|
+
* Extracts business constraints from validation schemas and decorators.
|
|
1566
|
+
* Finds Zod schemas (TS/JS), Pydantic models (Python), struct validate
|
|
1567
|
+
* tags (Go), #[validate] macros (Rust), Bean Validation (Java).
|
|
1568
|
+
*/
|
|
1569
|
+
declare class ValidationRuleExtractor implements SignalExtractor {
|
|
1570
|
+
readonly name = "validation-rules";
|
|
1571
|
+
readonly supportedExtensions: string[];
|
|
1572
|
+
extract(content: string, filePath: string, language: Language): ExtractionRecord[];
|
|
1573
|
+
private extractZod;
|
|
1574
|
+
private collectZodConstraints;
|
|
1575
|
+
private extractPydantic;
|
|
1576
|
+
private collectPydanticConstraints;
|
|
1577
|
+
private extractGoValidate;
|
|
1578
|
+
private collectGoValidateTags;
|
|
1579
|
+
private extractRustValidate;
|
|
1580
|
+
private collectRustValidateAttrs;
|
|
1581
|
+
private extractBeanValidation;
|
|
1582
|
+
private findJavaClasses;
|
|
1583
|
+
private findClosingBrace;
|
|
1584
|
+
private collectBeanConstraints;
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
/**
|
|
1588
|
+
* Extracts API route definitions revealing the domain model.
|
|
1589
|
+
* Finds Express/Hono routes (TS/JS), FastAPI/Flask decorators (Python),
|
|
1590
|
+
* Gin/Echo/http handlers (Go), Actix macros (Rust), Spring annotations (Java).
|
|
1591
|
+
*/
|
|
1592
|
+
declare class ApiPathExtractor implements SignalExtractor {
|
|
1593
|
+
readonly name = "api-paths";
|
|
1594
|
+
readonly supportedExtensions: string[];
|
|
1595
|
+
extract(content: string, filePath: string, language: Language): ExtractionRecord[];
|
|
1596
|
+
private extractJsTs;
|
|
1597
|
+
private extractPython;
|
|
1598
|
+
private extractGo;
|
|
1599
|
+
private extractRust;
|
|
1600
|
+
private extractJava;
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
/** All built-in code signal extractors. */
|
|
1604
|
+
declare const ALL_EXTRACTORS: readonly SignalExtractor[];
|
|
1605
|
+
/** Create an ExtractionRunner with all built-in extractors. */
|
|
1606
|
+
declare function createExtractionRunner(): ExtractionRunner;
|
|
1607
|
+
|
|
1002
1608
|
declare class DesignIngestor {
|
|
1003
1609
|
private readonly store;
|
|
1004
1610
|
constructor(store: GraphStore);
|
|
@@ -1219,6 +1825,6 @@ declare class CascadeSimulator {
|
|
|
1219
1825
|
private buildResult;
|
|
1220
1826
|
}
|
|
1221
1827
|
|
|
1222
|
-
declare const VERSION = "0.
|
|
1828
|
+
declare const VERSION = "0.6.0";
|
|
1223
1829
|
|
|
1224
|
-
export { type AnomalyDetectionOptions, type AnomalyReport, type ArticulationPoint, type AskGraphResult, type AssembledContext, Assembler, CIConnector, CURRENT_SCHEMA_VERSION, type PackedEnvelope as CacheableEnvelope, type CascadeLayer, type CascadeNode, type CascadeResult, type CascadeSimulationOptions, CascadeSimulator, type ClassificationResult, CodeIngestor, CompositeProbabilityStrategy, type ConflictDetail, type ConflictPrediction, ConflictPredictor, type ConflictSeverity, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, EDGE_TYPES, type EdgeQuery, type EdgeType, EntityExtractor, EntityResolver, FusionLayer, type FusionResult, GitIngestor, type GitRunner, GraphAnomalyAdapter, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, type GraphStabilityTier, GraphStore, type HttpClient, INTENTS, type ImpactGroups, type IndependenceCheckParams, type IndependenceResult, type IngestResult, type Intent, IntentClassifier, JiraConnector, KnowledgeIngestor, type LinkResult, NODE_STABILITY, NODE_TYPES, type NodeCategory, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type OverlapDetail, PackedSummaryCache, type PairResult, type ProbabilityStrategy, type ProjectionSpec, type RequirementCoverage, RequirementIngestor, type ResolvedEntity, ResponseFormatter, SlackConnector, type SourceLocation, type StatisticalOutlier, SyncManager, type SyncMetadata, type TaskDefinition, TaskIndependenceAnalyzer, TopologicalLinker, type TraceabilityOptions, type TraceabilityResult, type TracedFile, VERSION, type VectorSearchResult, VectorStore, askGraph, classifyNodeCategory, groupNodesByImpact, linkToCode, loadGraph, normalizeIntent, project, queryTraceability, saveGraph };
|
|
1830
|
+
export { ALL_EXTRACTORS, type AggregateResult, type AnomalyDetectionOptions, type AnomalyReport, ApiPathExtractor, type ArticulationPoint, type AskGraphResult, type AssembledContext, Assembler, BusinessKnowledgeIngestor, CIConnector, CURRENT_SCHEMA_VERSION, type PackedEnvelope as CacheableEnvelope, type CascadeLayer, type CascadeNode, type CascadeResult, type CascadeSimulationOptions, CascadeSimulator, type ClassificationResult, CodeIngestor, CompositeProbabilityStrategy, type ConflictDetail, type ConflictPrediction, ConflictPredictor, type ConflictSeverity, type ConflictType, ConfluenceConnector, type ConnectorConfig, ContextQL, type ContextQLParams, type ContextQLResult, type Contradiction, ContradictionDetector, type ContradictionEntry, type ContradictionResult, type CoverageReport, CoverageScorer, D2Parser, DecisionIngestor, DesignConstraintAdapter, DesignIngestor, type DesignStrictness, type DesignViolation, type DetectedElement, type DiagramEntity, type DiagramFormatParser, type DiagramParseResult, DiagramParser, type DiagramRelationship, type DomainCoverage, type DomainCoverageScore, type DriftClassification, type DriftDetector, type DriftFinding, type DriftResult, EDGE_TYPES, type EdgeQuery, type EdgeType, EntityExtractor, EntityResolver, EnumConstantExtractor, type ExtractionCounts, type ExtractionRecord, ExtractionRunner, FigmaConnector, FusionLayer, type FusionResult, type GapEntry, type GapReport, GitIngestor, type GitRunner, GraphAnomalyAdapter, type GraphBudget, GraphComplexityAdapter, type GraphComplexityHotspot, type GraphComplexityResult, type GraphConnector, GraphConstraintAdapter, GraphCouplingAdapter, type GraphCouplingFileData, type GraphCouplingResult, type GraphCoverageReport, type GraphDeadCodeData, type GraphDependencyData, type GraphDriftData, type GraphEdge, GraphEdgeSchema, GraphEntropyAdapter, GraphFeedbackAdapter, type GraphFilterResult, type GraphHarnessCheckData, type GraphImpactData, type GraphLayerViolation, type GraphMetadata, type GraphNode, GraphNodeSchema, type GraphSnapshotSummary, type GraphStabilityTier, GraphStore, type HttpClient, INTENTS, ImageAnalysisExtractor, type ImageAnalysisExtractorOptions, type AnalysisProvider as ImageAnalysisProvider, type ImageAnalysisResult, type ImpactGroups, type IndependenceCheckParams, type IndependenceResult, type IngestResult, type Intent, IntentClassifier, JiraConnector, KnowledgeDocMaterializer, KnowledgeIngestor, type KnowledgePipelineOptions, type KnowledgePipelineResult, KnowledgePipelineRunner, type KnowledgeSnapshot, type KnowledgeSnapshotEntry, KnowledgeStagingAggregator, type Language, type LinkResult, type LoadGraphResult, type MaterializeOptions, type MaterializeResult, type MaterializedDoc, MermaidParser, MiroConnector, NODE_STABILITY, NODE_TYPES, type NodeCategory, type NodeQuery, type NodeType, OBSERVABILITY_TYPES, type OverlapDetail, PackedSummaryCache, type PairResult, PlantUmlParser, type ProbabilityStrategy, type ProjectionSpec, type RequirementCoverage, RequirementIngestor, type ResolvedEntity, ResponseFormatter, type SignalExtractor, type SkippedEntry, SlackConnector, type SourceLocation, type StagedEntry, type StatisticalOutlier, StructuralDriftDetector, SyncManager, type SyncMetadata, type TaskDefinition, TaskIndependenceAnalyzer, TestDescriptionExtractor, TopologicalLinker, type TraceabilityOptions, type TraceabilityResult, type TracedFile, VERSION, ValidationRuleExtractor, type VectorSearchResult, VectorStore, askGraph, classifyNodeCategory, createExtractionRunner, detectLanguage, groupNodesByImpact, linkToCode, loadGraph, normalizeIntent, project, queryTraceability, saveGraph };
|