gobby_code/commands/codewiki/
mod.rs1use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
2use std::path::{Path, PathBuf};
3
4use crate::graph::typed_query;
5use crate::index::hasher;
6use crate::models::Symbol;
7
8const DEFAULT_OUT_DIR: &str = "codewiki";
9const CODEWIKI_META_PATH: &str = "_meta/codewiki.json";
10const OWNERSHIP_META_PATH: &str = "_meta/ownership.json";
11const MAX_EDGE_LIMIT: usize = 100_000;
12const CODEWIKI_RENDER_VERSION: u32 = 13;
48
49pub(crate) const DEFAULT_VERIFY_PROFILE: &str = "feature_mid";
55
56mod architecture_diagrams;
57mod build;
58mod cluster;
59mod generation;
60mod graph;
61mod io;
62mod ownership;
63mod paths;
64mod progress;
65mod prompts;
66mod relationship_facts;
67mod render;
68mod repair;
69mod reuse;
70mod run;
71mod system_model;
72mod text;
73mod truth_digest;
74mod types;
75
76#[cfg(test)]
78pub(crate) use build::build_module_docs;
79pub(crate) use build::{
80 AuditContext, FileDocPosition, build_architecture_doc, build_audit_context,
81 build_codewiki_changes_doc, build_codewiki_index_snapshot, build_curated_navigation_docs,
82 build_deprecations_doc, build_feature_catalog_doc, build_file_doc, build_hotspots_doc,
83 build_infrastructure_doc, build_module_docs_with_filter, build_onboarding_doc,
84};
85pub(crate) use truth_digest::build_truth_digest;
86pub(crate) use cluster::{
88 cluster_file_modules, files_for_import_target, first_component_for_file,
89 symbols_by_file_component,
90};
91#[cfg(test)]
92pub(crate) use cluster::{common_module_for_files, find_file_root};
93pub use generation::generate_hierarchical_docs;
95#[cfg(test)]
96pub(crate) use generation::{
97 generate_hierarchical_docs_core, generate_hierarchical_docs_with_progress,
98 generate_hierarchical_docs_with_reuse, generate_hierarchical_docs_with_verify,
99};
100pub(crate) use graph::fetch_codewiki_graph_edges;
101#[cfg(test)]
102pub(crate) use graph::{
103 codewiki_call_edges_query, codewiki_import_edges_query, import_edges_from_pairs,
104};
105pub(crate) use ownership::{OwnershipMeta, OwnershipOptions, build_ownership_doc};
106pub(crate) use progress::CodewikiProgress;
107pub(crate) use paths::{
109 component_label, direct_child_modules, file_doc_path, file_wikilink, in_scope, inline_code,
110 is_core_file, module_ancestors, module_depth, module_doc_path, module_for_file,
111 module_is_ancestor, module_wikilink, parent_module, plural, write_markdown_table_header,
112 write_markdown_table_row,
113};
114pub(crate) use relationship_facts::{RelationshipFacts, relationship_facts_for_file};
116pub use system_model::{
119 Crate, Edge, RuntimeMode, ServiceBoundary, ServiceKind, SystemModel, build_system_model,
120};
121#[cfg(test)]
123pub(crate) use architecture_diagrams::is_valid_mermaid;
124pub(crate) use architecture_diagrams::{render_architecture_diagrams, render_service_matrix};
125pub(crate) use render::{
127 build_repo_doc, collect_subsystem_dependency_edges, render_architecture_doc,
128 render_deprecations_doc, render_feature_catalog_doc, render_file_doc, render_hotspots_doc,
129 render_infrastructure_doc, render_module_doc, render_onboarding_doc,
130};
131pub(crate) use reuse::{ReusePlan, span_files};
133#[cfg(test)]
134pub(crate) use run::{
135 git_changed_files, load_symbols_for_codewiki, should_document_file, validate_edge_limit,
136};
137pub use run::{run, run_repair};
138pub use repair::{CitationRepairSummary, repair_citations};
141pub(crate) use text::{
143 CitationResolver, Generation, VerifyOutcome, append_curated_source_files,
144 append_relevant_source_files, citation_list, citation_markers, collect_link_spans,
145 display_child_summary, frontmatter_with_degradation,
146 frontmatter_with_degradation_and_verify_notes_without_ranges,
147 frontmatter_with_degradation_without_ranges, ground_text, maybe_generate,
148 neutralize_symbol_purpose_links, reanchor_citations, replace_citations_with_markers,
149 resolve_text_generator, resolve_text_verifier, structural_file_summary,
150 structural_module_summary, structural_repo_summary, structural_symbol_purpose,
151 verify_with_notes, write_references, write_section,
152};
153#[cfg(test)]
154pub(crate) use text::{frontmatter, generate_with_bounded_retry};
155pub use types::{
156 AiDepth, CodewikiAiOptions, CodewikiGraphAvailability, CodewikiGraphEdge,
157 CodewikiGraphEdgeKind, CodewikiInput, CodewikiRunSummary, LeadingChunk, PromptTier, ProseDepth,
158 ProseRegister, TextGenerator, TextVerifier,
159};
160pub(crate) use types::{
161 ArchitectureDoc, ArchitectureSubsystem, BuiltDoc, CodewikiDocMeta, CodewikiFileSnapshot,
162 CodewikiGraph, CodewikiIndexSnapshot, CodewikiMeta, CodewikiSymbolSnapshot,
163 CodewikiTruthDigest, CodewikiTruthStackEntry, CodewikiTruthSuperseded, DeprecatedSymbol,
164 DeprecationIndex, DeprecationsDoc, FeatureCatalogDoc, FileDoc, FileLink, HotspotFinding,
165 HotspotNode, HotspotsDoc, InfraSection, InfrastructureDoc, ModuleDoc, ModuleLink,
166 OnboardingDoc, OnboardingEntryPoint, OnboardingStep, SourceSpan, SymbolDoc, TestIndex,
167 VerifyNote, ranked_source_excerpts, source_excerpt_for_file,
168};
169#[cfg(test)]
172pub(crate) use types::FeatureBinarySection;
173
174#[cfg(test)]
175pub(crate) use io::write_incremental_doc_set_with_snapshot;
176pub(crate) use io::{DocPruneScope, DocSink, read_ownership_meta, write_ownership_meta};
177pub use io::{write_doc_set, write_incremental_doc_set};
178#[cfg(test)]
179pub(crate) use truth_digest::TRUTH_DIGEST_META_PATH;
180pub(crate) use truth_digest::write_truth_digest;
181
182#[cfg(test)]
183mod tests;