opencode-swarm 7.158.0 → 7.159.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.
Files changed (62) hide show
  1. package/README.md +4 -2
  2. package/dist/background/pr-subscriptions.d.ts +31 -15
  3. package/dist/cli/{coder-settlement-5sexsmqz.js → coder-settlement-66mqw0xt.js} +3 -3
  4. package/dist/cli/{config-doctor-ewn2kw6d.js → config-doctor-nkx61b9e.js} +2 -2
  5. package/dist/cli/{core-72wdmzps.js → core-b3db7gf6.js} +1 -1
  6. package/dist/cli/{curator-llm-factory-r8q84m4g.js → curator-llm-factory-c4y1mrr5.js} +20 -20
  7. package/dist/cli/{curator-g06sa98p.js → curator-w4ntvkz5.js} +20 -20
  8. package/dist/cli/{evidence-summary-service-ttd0ntm0.js → evidence-summary-service-vadgnzk6.js} +6 -6
  9. package/dist/cli/{gate-evidence-agnxf7md.js → gate-evidence-0chatz5e.js} +2 -2
  10. package/dist/cli/{guardrail-explain-qf4k176t.js → guardrail-explain-ax2qmsp4.js} +21 -21
  11. package/dist/cli/{guardrail-log-g4qc595v.js → guardrail-log-t3c9g8tc.js} +3 -3
  12. package/dist/cli/{guardrail-reset-zpxk0p1j.js → guardrail-reset-wvdb5sv5.js} +20 -20
  13. package/dist/cli/{hive-promoter-zxy07gjg.js → hive-promoter-mfq3ee0n.js} +20 -20
  14. package/dist/cli/{index-rc93mm6e.js → index-04yrxg0z.js} +1 -1
  15. package/dist/cli/{index-c57cyrwn.js → index-1sdb57jv.js} +3 -3
  16. package/dist/cli/{index-f036tggv.js → index-35grv4jg.js} +3 -3
  17. package/dist/cli/{index-rac2gkvr.js → index-3e8600a7.js} +132 -63
  18. package/dist/cli/{index-rd324153.js → index-6e6qxf5q.js} +15 -1
  19. package/dist/cli/{index-pvs2zw1y.js → index-8jnzp5ct.js} +2 -2
  20. package/dist/cli/{index-745dh1z1.js → index-8kfbdrxa.js} +22 -22
  21. package/dist/cli/{index-1vxmqvpt.js → index-9vt2hknx.js} +1 -1
  22. package/dist/cli/{index-f776m4r5.js → index-b1tenv2s.js} +75 -72
  23. package/dist/cli/{index-6xxpwk5x.js → index-b82tq895.js} +1 -1
  24. package/dist/cli/{index-yfbp4q09.js → index-e2s08v0q.js} +1 -1
  25. package/dist/cli/{index-x71shq8j.js → index-erdsawqz.js} +4 -4
  26. package/dist/cli/{index-y3hdwh66.js → index-fcp41snp.js} +3 -3
  27. package/dist/cli/{index-zawd71cg.js → index-ghjs1n7k.js} +3 -3
  28. package/dist/cli/{index-gm10kvne.js → index-hte1e31d.js} +2 -2
  29. package/dist/cli/{index-vwx0by4y.js → index-k48kgm6z.js} +5 -5
  30. package/dist/cli/{index-bv24pbaj.js → index-k4arrwrz.js} +3 -3
  31. package/dist/cli/{index-x4ftmdha.js → index-mc9qgkwd.js} +531 -100
  32. package/dist/cli/{index-a1884hh4.js → index-pvzaryhr.js} +1 -1
  33. package/dist/cli/{index-663wnh64.js → index-tcbjjppb.js} +26 -2
  34. package/dist/cli/{index-dmfbmnp7.js → index-vywbn766.js} +1 -1
  35. package/dist/cli/{index-fwe1wh6r.js → index-we3nf5as.js} +1 -1
  36. package/dist/cli/{index-5tchehv7.js → index-xmz69g65.js} +1 -1
  37. package/dist/cli/{index-nvta6kcv.js → index-ynjy98vv.js} +2 -2
  38. package/dist/cli/index.js +28 -36
  39. package/dist/cli/{knowledge-escalator-22zaj224.js → knowledge-escalator-x85t1e66.js} +6 -6
  40. package/dist/cli/{knowledge-events-xbx1k408.js → knowledge-events-bwx99mxc.js} +4 -4
  41. package/dist/cli/{knowledge-store-fnm8xh9c.js → knowledge-store-21m81zsa.js} +1 -1
  42. package/dist/cli/{knowledge-validator-t2jztjy1.js → knowledge-validator-yxcadg1p.js} +2 -2
  43. package/dist/cli/{pending-delegations-29rtv1gb.js → pending-delegations-b8qka5nf.js} +1 -1
  44. package/dist/cli/{pr-review-reentry-authorization-25dep81m.js → pr-review-reentry-authorization-wv3ck5kh.js} +20 -20
  45. package/dist/cli/{pr-subscriptions-cgac3ydd.js → pr-subscriptions-j9j70bmd.js} +1 -1
  46. package/dist/cli/{scan-cursor-8acs9kwe.js → scan-cursor-m3w0tapb.js} +2 -2
  47. package/dist/cli/{schema-rjhassd0.js → schema-0b0dqn28.js} +1 -1
  48. package/dist/cli/{scope-persistence-jb1a5dzh.js → scope-persistence-199f7yqc.js} +4 -4
  49. package/dist/cli/{skill-generator-frgppk1w.js → skill-generator-a2ekcbe2.js} +7 -7
  50. package/dist/cli/{worktree-collision-ownership-f5sj6ffa.js → worktree-collision-ownership-5qaab3q7.js} +1 -1
  51. package/dist/cli/{worktree-isolation-5b0w6bha.js → worktree-isolation-esesc842.js} +20 -20
  52. package/dist/commands/close.d.ts +2 -0
  53. package/dist/config/loader.d.ts +3 -0
  54. package/dist/config/project-init.d.ts +11 -7
  55. package/dist/config/schema.d.ts +1 -0
  56. package/dist/index.js +477 -473
  57. package/dist/tools/repo-graph/query.d.ts +1 -0
  58. package/dist/tools/repo-graph/symbol-query.d.ts +47 -0
  59. package/dist/tools/repo-graph/types.d.ts +267 -1
  60. package/dist/tools/repo-graph.d.ts +3 -1
  61. package/opencode-swarm.schema.json +5160 -0
  62. package/package.json +4 -2
@@ -52,6 +52,7 @@ export declare function getLocalizationContext(graph: RepoGraph, filePath: strin
52
52
  maxDeps?: number;
53
53
  maxDepth?: number;
54
54
  }): LocalizationBlock;
55
+ export declare function extractSignatureText(lines: string[], startLine: number): string;
55
56
  export declare function getContextPack(graph: RepoGraph, file: string, symbol: string, options?: {
56
57
  maxDepth?: number;
57
58
  maxTokens?: number;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * KG-14 expanded graph query functions (issue #1535).
3
+ *
4
+ * Symbol-level, impact, diff, and explainability queries over the persisted
5
+ * repo graph. Every function is stateless and read-only: inputs are validated
6
+ * by the `repo_map` tool layer (`src/tools/repo-map.ts`); this module assumes
7
+ * well-formed arguments and focuses on bounded, workspace-relative,
8
+ * provenance-bearing output.
9
+ *
10
+ * Bounding contract: every list-shaped output is capped (default caps below
11
+ * or the caller's `topN`), every result carries a `budget {returned, dropped}`
12
+ * envelope, and paths in results are workspace-relative with forward slashes.
13
+ */
14
+ import type { DiffContextResult, GraphExplainResult, GraphSymbolKind, GraphSymbolVisibility, ImpactConeResult, RepoGraph, SymbolContextResult, SymbolSearchResult } from './types';
15
+ export declare function searchSymbols(graph: RepoGraph, options: {
16
+ query: string;
17
+ kind?: GraphSymbolKind;
18
+ language?: string;
19
+ file?: string;
20
+ visibility?: GraphSymbolVisibility;
21
+ topN?: number;
22
+ }): SymbolSearchResult;
23
+ export declare function getSymbolContext(graph: RepoGraph, options: {
24
+ file?: string;
25
+ symbol?: string;
26
+ symbolId?: string;
27
+ includeSource?: boolean;
28
+ topN?: number;
29
+ }): SymbolContextResult;
30
+ export declare function getImpactCone(graph: RepoGraph, options: {
31
+ file: string;
32
+ symbol?: string;
33
+ maxDepth?: number;
34
+ topN?: number;
35
+ }): ImpactConeResult;
36
+ export declare function getDiffContext(graph: RepoGraph, options: {
37
+ files?: string[];
38
+ diff?: string;
39
+ maxDepth?: number;
40
+ topN?: number;
41
+ }): DiffContextResult;
42
+ export declare function explainGraphEntry(graph: RepoGraph, options: {
43
+ file: string;
44
+ symbol?: string;
45
+ line?: number;
46
+ topN?: number;
47
+ }): GraphExplainResult;
@@ -47,8 +47,15 @@ export declare const REPO_GRAPH_FILENAME = "repo-graph.json";
47
47
  * 1.5.0 adds an optional graph-level `repoRootId` plus additive SymbolEdge v2
48
48
  * identity, kind, confidence, resolution, and evidence fields. Legacy 1.2.0
49
49
  * four-coordinate symbol edges remain readable and are normalized in memory.
50
+ *
51
+ * 1.6.0 adds the optional per-node `exportKinds` map (declaration kind per
52
+ * symbol, keyed exactly like `exportRanges`), powering the KG-14 declaration-
53
+ * kind query axis (`symbol_search` kind filter, `symbol_context` identity).
54
+ * The field is optional, so 1.0.0–1.5.0 graphs still load; queries surface
55
+ * `kind: null` hits and a `kindSupported: false` degradation note instead of
56
+ * failing (issue #1535).
50
57
  */
51
- export declare const GRAPH_SCHEMA_VERSION = "1.5.0";
58
+ export declare const GRAPH_SCHEMA_VERSION = "1.6.0";
52
59
  /**
53
60
  * Default per-file source-size ceiling shared by graph construction and
54
61
  * query-time source reads. The builder treats this as the default value of
@@ -160,6 +167,17 @@ export interface GraphNode {
160
167
  startLine: number;
161
168
  endLine: number;
162
169
  }>;
170
+ /**
171
+ * Declaration kind per symbol, keyed by symbol name (schema >= 1.6.0;
172
+ * optional, so older graphs load unchanged). Keys are assigned in the same
173
+ * builder loop and under the same widening + duplicate-name policies as
174
+ * `exportRanges`, but ONLY at real declaration sites — re-export bindings
175
+ * add an `exportRanges` entry without a kind (the symbol is declared
176
+ * elsewhere), so `exportKinds` is a subset of `exportRanges` keys.
177
+ * Absent entries read as `kind: null` (old graph, regex-fallback scan, or
178
+ * re-exported binding).
179
+ */
180
+ exportKinds?: Record<string, GraphSymbolKind>;
163
181
  /** Imported module specifiers */
164
182
  imports: string[];
165
183
  /** Language/extension of the file */
@@ -246,6 +264,26 @@ export type SymbolEdgeKind = (typeof SYMBOL_EDGE_KIND_VALUES)[number];
246
264
  export declare const SYMBOL_EDGE_RESOLUTION_VALUES: readonly ["exact", "import_binding", "same_file_scope", "unique_name", "type_resolved", "lsp", "scip", "heuristic", "unresolved"];
247
265
  export type SymbolEdgeResolution = (typeof SYMBOL_EDGE_RESOLUTION_VALUES)[number];
248
266
  export type SymbolIdentityKind = 'symbol' | 'module';
267
+ /**
268
+ * Declaration kind of a symbol — WHAT the symbol is (function, class, …).
269
+ * Mirrors `FileSymbolFacts['defs'][number]['kind']` from
270
+ * `src/lang/symbol-graph.ts` and is persisted per node via
271
+ * `GraphNode.exportKinds` (schema >= 1.6.0).
272
+ *
273
+ * This is the DECLARATION axis and is deliberately distinct from
274
+ * {@link SymbolEdgeKind}, the RELATIONSHIP axis (CALLS/REFERENCES/…) that
275
+ * describes how two symbols connect. A symbol never referenced cross-file has
276
+ * no symbol edge but still has a declaration kind.
277
+ */
278
+ export declare const GRAPH_SYMBOL_KIND_VALUES: readonly ["function", "class", "const", "type", "interface", "enum", "method"];
279
+ export type GraphSymbolKind = (typeof GRAPH_SYMBOL_KIND_VALUES)[number];
280
+ /**
281
+ * Visibility tier derived at query time from persisted fields: a symbol in
282
+ * `GraphNode.exports` is `exported` (public module surface); a symbol that
283
+ * only exists in `exportRanges` (widened-grammar member defs) is
284
+ * `module-local`.
285
+ */
286
+ export type GraphSymbolVisibility = 'exported' | 'module-local';
249
287
  export interface SymbolEdgeEvidence {
250
288
  /** Workspace-relative source path; source text itself is never persisted. */
251
289
  file: string;
@@ -443,6 +481,202 @@ export interface DeadExportsResult {
443
481
  /** Human-readable note describing scope and limitations of the result. */
444
482
  note: string;
445
483
  }
484
+ /** One symbol hit from `symbol_search`, with declaration metadata. */
485
+ export interface SymbolHit {
486
+ /** Workspace-relative file path. */
487
+ file: string;
488
+ symbol: string;
489
+ /** Declaration kind; `null` on graphs predating schema 1.6.0 (no exportKinds). */
490
+ kind: GraphSymbolKind | null;
491
+ visibility: GraphSymbolVisibility;
492
+ language: string;
493
+ /** 1-based definition line; 0 when no line is known. */
494
+ line: number;
495
+ exported: boolean;
496
+ /** Which match tier produced this hit (results are tier-ordered). */
497
+ match: 'exact' | 'prefix' | 'substring' | 'subsequence';
498
+ }
499
+ export interface SymbolSearchResult {
500
+ query: string;
501
+ hits: SymbolHit[];
502
+ count: number;
503
+ budget: {
504
+ returned: number;
505
+ dropped: number;
506
+ };
507
+ /** False when the graph predates schema 1.6.0, so `kind` filters/hits degrade. */
508
+ kindSupported: boolean;
509
+ /** Present (non-empty) only when a filter or scan could not be fully applied. */
510
+ warnings: string[];
511
+ }
512
+ /**
513
+ * One symbol-level edge inside an impact cone. `relationshipKind`,
514
+ * `confidence`, and `resolution` come from the underlying `SymbolEdge` and
515
+ * are `null` for legacy (pre-1.5.0) edges.
516
+ */
517
+ export interface ConeEntry {
518
+ /** Workspace-relative file path. */
519
+ file: string;
520
+ symbol: string;
521
+ direction: 'caller' | 'callee';
522
+ /** 1 = direct neighbor of the target. */
523
+ depth: number;
524
+ relationshipKind: SymbolEdgeKind | null;
525
+ confidence: number | null;
526
+ resolution: SymbolEdgeResolution | null;
527
+ }
528
+ /** Focused definition-first context for one symbol. */
529
+ export interface SymbolContextResult {
530
+ found: boolean;
531
+ identity: {
532
+ file: string;
533
+ symbol: string;
534
+ symbolId: string | null;
535
+ kind: GraphSymbolKind | null;
536
+ visibility: GraphSymbolVisibility;
537
+ language: string;
538
+ startLine: number;
539
+ endLine: number | null;
540
+ } | null;
541
+ signature?: string;
542
+ source?: {
543
+ text: string;
544
+ mode: 'full' | 'signature' | 'summary';
545
+ hash: string;
546
+ startLine: number;
547
+ endLine: number;
548
+ };
549
+ callers: ConeEntry[];
550
+ callees: ConeEntry[];
551
+ /** Present only when resolution scanned stable IDs to match `symbolId`. */
552
+ symbolIdScan?: {
553
+ computed: number;
554
+ capped: boolean;
555
+ };
556
+ budget: {
557
+ callersReturned: number;
558
+ calleesReturned: number;
559
+ dropped: number;
560
+ };
561
+ warnings: string[];
562
+ note?: string;
563
+ }
564
+ /** Structured impact cone for a file or file+symbol target. */
565
+ export interface ImpactConeResult {
566
+ target: {
567
+ file: string;
568
+ symbol: string | null;
569
+ };
570
+ /** Symbol-level entries (empty when no symbol was given or the graph has no symbolEdges). */
571
+ entries: ConeEntry[];
572
+ /** File-level blast radius for the same target and depth — risk semantics identical to `blast_radius`. */
573
+ fileImpact: BlastRadiusResult;
574
+ risk: BlastRadiusResult['riskLevel'];
575
+ /** Fixed-vocabulary notes with counts (transitive spread, hubs, low-confidence edges, tests, boundaries). */
576
+ riskNotes: string[];
577
+ /** Cone files carrying the `test_file` role. */
578
+ tests: string[];
579
+ routes: Array<{
580
+ file: string;
581
+ fact: RouteFact;
582
+ }>;
583
+ dataFacts: Array<{
584
+ file: string;
585
+ fact: DataOperationFact;
586
+ }>;
587
+ securityFacts: Array<{
588
+ file: string;
589
+ fact: SecurityFact;
590
+ }>;
591
+ boundaries: Array<{
592
+ name: string;
593
+ files: string[];
594
+ }>;
595
+ budget: {
596
+ entriesReturned: number;
597
+ dropped: number;
598
+ };
599
+ truncated: boolean;
600
+ warnings: string[];
601
+ }
602
+ /** One changed symbol mapped from a diff hunk (or listed file-level). */
603
+ export interface DiffSymbolChange {
604
+ symbol: string;
605
+ kind: GraphSymbolKind | null;
606
+ startLine: number;
607
+ endLine: number;
608
+ /** Hunk-mode: changed graph lines that intersect the symbol span (bounded). */
609
+ changedLines: number[];
610
+ }
611
+ export interface DiffFileSummary {
612
+ /** Workspace-relative file path. */
613
+ file: string;
614
+ /** False when the changed file is not present in the graph (e.g. deleted or unscanned). */
615
+ known: boolean;
616
+ symbols: DiffSymbolChange[];
617
+ note?: string;
618
+ }
619
+ export interface DiffContextResult {
620
+ /** `hunk` when a diff text was parsed with line ranges; `file` when only file names were given. */
621
+ granularity: 'hunk' | 'file';
622
+ files: DiffFileSummary[];
623
+ impact: {
624
+ files: string[];
625
+ tests: string[];
626
+ risk: BlastRadiusResult['riskLevel'];
627
+ notes: string[];
628
+ };
629
+ budget: {
630
+ returned: number;
631
+ dropped: number;
632
+ };
633
+ truncated: boolean;
634
+ warnings: string[];
635
+ }
636
+ /**
637
+ * One reason a file/symbol/span is graph-relevant: its definition, the
638
+ * symbol edges that connect it, or file-level import relationships.
639
+ */
640
+ export interface ExplainReason {
641
+ type: 'definition' | 'referenced_by' | 'references' | 'imported_by' | 'imports';
642
+ /** Workspace-relative file path of the OTHER side of the relationship (or the definition file). */
643
+ file: string;
644
+ symbol?: string;
645
+ kind: GraphSymbolKind | null;
646
+ relationshipKind?: SymbolEdgeKind;
647
+ /** Undefined for definition/import reasons; `null`-able inside evidence-bearing edges is avoided by omitting. */
648
+ confidence?: number;
649
+ resolution?: SymbolEdgeResolution;
650
+ evidence?: SymbolEdgeEvidence[];
651
+ }
652
+ export interface GraphExplainResult {
653
+ target: {
654
+ file: string;
655
+ symbol: string | null;
656
+ line: number | null;
657
+ };
658
+ fileKnown: boolean;
659
+ /** When `line` was given: the symbol whose span contains it (smallest span wins). */
660
+ resolvedSpan?: {
661
+ symbol: string;
662
+ startLine: number;
663
+ endLine: number;
664
+ };
665
+ definition?: {
666
+ file: string;
667
+ symbol: string;
668
+ kind: GraphSymbolKind | null;
669
+ visibility: GraphSymbolVisibility;
670
+ startLine: number;
671
+ endLine: number | null;
672
+ };
673
+ reasons: ExplainReason[];
674
+ budget: {
675
+ returned: number;
676
+ dropped: number;
677
+ };
678
+ warnings: string[];
679
+ }
446
680
  export interface GraphExtractionFailure {
447
681
  file: string;
448
682
  language: string;
@@ -509,6 +743,38 @@ export interface GraphHealthResult {
509
743
  walkTruncationReason: 'budget' | 'cap' | null;
510
744
  incrementalFallbacks: number;
511
745
  notes: string[];
746
+ /**
747
+ * KG-14 additive summaries (issue #1535). Optional on the interface so
748
+ * external constructors stay source-compatible; `getGraphHealth` always
749
+ * populates them (zero-valued when the underlying data is absent).
750
+ */
751
+ /** Symbol-edge population summary (legacy edges counted under `withV2Fields: false`). */
752
+ symbolEdgeSummary?: {
753
+ total: number;
754
+ withV2Fields: number;
755
+ lowConfidence: number;
756
+ unresolved: number;
757
+ };
758
+ /** Resolution-attribution histogram over symbol edges (includes `unrecorded`). */
759
+ resolutionBreakdown?: Record<string, number>;
760
+ /**
761
+ * Stale composition from the freshness probe; `null` when no probe was
762
+ * supplied. `probeTruncated` is `FreshnessProbe.truncated` — the freshness
763
+ * WALK hitting its budget — and is deliberately a different signal from
764
+ * build-time `walkTruncated` above (the graph BUILD walk).
765
+ */
766
+ staleSummary?: {
767
+ changed: number;
768
+ removed: number;
769
+ probeTruncated: boolean;
770
+ } | null;
771
+ /** Extraction-failure histogram keyed by failure reason. */
772
+ extractionFailureSummary?: Record<string, number>;
773
+ /** How many nodes carry schema 1.6.0 `exportKinds` data. */
774
+ kindCoverage?: {
775
+ nodesWithKinds: number;
776
+ nodesTotal: number;
777
+ };
512
778
  }
513
779
  /** Authoritative states returned by the bounded repository freshness probe. */
514
780
  export type FreshnessProbeState = 'clean' | 'drifted' | 'no-fingerprint' | 'inconclusive';
@@ -11,6 +11,7 @@
11
11
  * storage.ts — safe load and save to .swarm/repo-graph.json
12
12
  * builder.ts — workspace scanning and full-graph construction
13
13
  * incremental.ts — incremental updates for changed files
14
+ * symbol-query.ts — KG-14 symbol/impact/diff/explain queries (issue #1535)
14
15
  *
15
16
  * All existing imports of this module continue to work unchanged.
16
17
  */
@@ -26,6 +27,7 @@ export { extractFileOntology } from './repo-graph/ontology';
26
27
  export type { DeadExportsOptions } from './repo-graph/query';
27
28
  export { buildOntologyPreflightPacket, getBlastRadius, getCallers, getContextPack, getDeadExports, getDependencies, getFileOntology, getGraphHealth, getGraphNode, getImporters, getKeyFiles, getLocalizationContext, getPackageBoundaries, getSymbolConsumers, isGraphFresh, resetQueryCache, } from './repo-graph/query';
28
29
  export { getGraphPath, loadGraph, loadGraphSync, loadOrCreateGraph, saveGraph, saveIfDirty, } from './repo-graph/storage';
29
- export type { AskHit, AskOptions, AskResult, BlastRadiusResult, BuildWorkspaceGraphOptions, CallerReference, ContextPackCoverage, ContextPackResult, ContextPackSnippet, ContextPackSourceMode, ContextPackSpan, ConventionFact, DataOperationFact, DeadExportCandidate, DeadExportsResult, FileOntology, FileReference, FileRole, FreshnessProbeState, GraphEdge, GraphExtractionFailure, GraphExtractorInputWitness, GraphHealthResult, GraphNode, GraphUnresolvedImport, LocalizationBlock, OntologyFinding, PackageBoundarySummary, RepoGraph, RepoGraphDiagnostics, RouteFact, RouteMethod, SecurityFact, SymbolEdge, SymbolEdgeEvidence, SymbolEdgeKind, SymbolEdgeResolution, SymbolIdentityKind, SymbolReference, } from './repo-graph/types';
30
+ export { explainGraphEntry, getDiffContext, getImpactCone, getSymbolContext, searchSymbols, } from './repo-graph/symbol-query';
31
+ export type { AskHit, AskOptions, AskResult, BlastRadiusResult, BuildWorkspaceGraphOptions, CallerReference, ConeEntry, ContextPackCoverage, ContextPackResult, ContextPackSnippet, ContextPackSourceMode, ContextPackSpan, ConventionFact, DataOperationFact, DeadExportCandidate, DeadExportsResult, DiffContextResult, DiffFileSummary, DiffSymbolChange, ExplainReason, FileOntology, FileReference, FileRole, FreshnessProbeState, GraphEdge, GraphExplainResult, GraphExtractionFailure, GraphExtractorInputWitness, GraphHealthResult, GraphNode, GraphSymbolKind, GraphSymbolVisibility, GraphUnresolvedImport, ImpactConeResult, LocalizationBlock, OntologyFinding, PackageBoundarySummary, RepoGraph, RepoGraphDiagnostics, RouteFact, RouteMethod, SecurityFact, SymbolContextResult, SymbolEdge, SymbolEdgeEvidence, SymbolEdgeKind, SymbolEdgeResolution, SymbolHit, SymbolIdentityKind, SymbolReference, SymbolSearchResult, } from './repo-graph/types';
30
32
  export { createEmptyGraph, DEFAULT_MAX_SOURCE_BYTES, GRAPH_SCHEMA_VERSION, inferPackageBoundary, isSchemaVersionAtLeast, normalizeGraphPath, REPO_GRAPH_FILENAME, updateGraphMetadata, } from './repo-graph/types';
31
33
  export { validateGraphEdge, validateGraphNode, validateWorkspace, } from './repo-graph/validation';