1#![warn(missing_docs)]
41
42#[cfg(feature = "ast")]
43pub mod ast;
44pub mod apply_links;
45pub mod autolink;
46pub mod bootstrap;
47pub mod brain;
48pub mod context;
49pub mod crate_docs;
50pub mod doctor;
51pub mod error;
52pub mod exporter;
53pub mod fts;
54pub mod graph;
55pub mod hubs;
56pub mod id;
57pub mod ignore;
58pub mod indexer;
59pub mod mmap;
60pub mod mutator;
61pub mod note;
62pub mod plan_status;
63pub mod scopes;
64#[cfg(feature = "obsidian")]
65pub mod obsidian;
66pub mod query;
67pub mod registry;
68pub mod storage;
69pub mod symbols;
70pub mod types;
71pub mod watch;
72
73pub use apply_links::{
74 apply_links, ApplyEdit, ApplyKind, ApplyOptions, ApplyReport, ApplyStyle, ApplyTier,
75};
76pub use autolink::{
77 is_auto_relation, is_explicit_relation, list_orphan_notes, normalize_target_arg, path_stem,
78 run_auto_link, AutoLinkReport, AutoLinkSuggestion, OrphanNote, REL_AUTO_FILENAME,
79 REL_AUTO_TAG, WEIGHT_AUTO_FILENAME, WEIGHT_AUTO_TAG,
80};
81pub use bootstrap::{
82 bootstrap_noninteractive, bootstrap_workspace, default_agents_md_template,
83 resolve_agents_md_template, BootstrapAction, BootstrapMode, BootstrapOptions, BootstrapReport,
84};
85pub use brain::{find_brain_dir, Brain};
86pub use context::ContextOptions;
87pub use crate_docs::{
88 collect_crate_deps, crates_io_url, docs_rs_url, write_crate_docs_notes, CrateDep,
89};
90pub use fts::{is_generic_topic, prepare_search_query, tokenize_query, PreparedQuery};
91pub use hubs::{
92 changelog_latest_heading, changelog_version_aliases, detect_project_hub, is_hub_node_id,
93 is_planning_intent, is_release_intent, ProjectHub, HUB_BACKLOG, HUB_CHANGELOG, HUB_README,
94 HUB_ROADMAP,
95};
96pub use graph::{
97 graph_stats, neighborhood, resolve_graph_target, GraphDirection, GraphHopEdge, GraphHub,
98 GraphNeighborhood, GraphNodeRef, GraphOptions, GraphStats,
99};
100pub use doctor::{run_doctor, run_doctor_with, DoctorFinding, DoctorOptions, DoctorReport, DoctorSeverity};
101pub use error::{BrainError, Result};
102pub use exporter::{BrainExporter, BrainImporter, PortableBrainBundle, BUNDLE_VERSION};
103pub use ignore::{recommended_ignore_extras, write_rustbrainignore, IgnoreSet};
104pub use indexer::WorkspaceIndexer;
105pub use mmap::{CsrCompiler, CsrMmapGraph, MMAP_VERSION};
106pub use note::{create_note, default_dir_for_type, slugify_title, NoteCreated, NoteNewOptions};
107pub use plan_status::{
108 densify_plan, enrich_plan_index_fields, PlanStatus, PlanStatusDigest, PlanTask,
109};
110pub use scopes::{
111 absorb_all_to_main, absorb_scope, add_scope, attach_subbrain, count_nodes_by_scope, detect_path,
112 disable_multi, discover_cargo_members, enable_multi, ensure_manifest, format_scopes_text,
113 import_brain, load_manifest, reconcile_scopes, remove_scope_def, rewrite_wikilinks_for_import,
114 save_manifest, sanitize_scope_id, scope_for_cwd, suggest_scope_id, AbsorbAllReport, AbsorbReport,
115 BrainMode, CargoMember, DetectReport, ImportBrainOptions, ImportBrainReport, ReconcileReport,
116 ScopeDef, ScopeSource, WorkspaceManifest, IMPORT_DEFAULT_MAX_BYTES, IMPORT_DEFAULT_MAX_FILES,
117 MAIN_SCOPE,
118};
119pub use query::{PendingLink, QueryOptions, RankedHit, ScopeMainInclude};
120pub use registry::{GlobalRankedHit, GlobalRegistry};
121pub use storage::{Database, SCHEMA_VERSION};
122pub use symbols::{extract_symbol_refs, symbol_node_id, SymbolRef};
123pub use types::{
124 xml_escape, ContextBundle, ContextNode, ContextRole, Edge, Node, NodeType, SyncStats,
125};
126pub use watch::{is_indexable, is_under_skipped, WatchConfig};
127
128#[cfg(feature = "ast")]
129pub use ast::{compute_symbol_hash, AstError, CodeAstParser, SymbolAnchor};
130
131#[cfg(feature = "obsidian")]
132pub use obsidian::{
133 extract_wikilink_spans, extract_wikilinks, parse_frontmatter, CanvasEdge, CanvasNode,
134 Frontmatter, ObsidianCanvas, WikiLink, WikiLinkSpan,
135};
136
137#[cfg(feature = "jshift")]
138pub use mutator::{extract_json_field_slice, update_json_field_inplace};
139
140#[cfg(feature = "watch")]
141pub use watch::watch_workspace;