fallow_types/lib.rs
1//! Shared types for fallow codebase intelligence.
2//!
3//! This crate contains type definitions used across multiple fallow crates
4//! (core, CLI, LSP). It has no analysis logic, only data structures.
5
6#![warn(missing_docs)]
7#![cfg_attr(
8 test,
9 allow(
10 clippy::unwrap_used,
11 clippy::expect_used,
12 reason = "tests use unwrap and expect to keep fixture setup concise"
13 )
14)]
15
16/// Typed audit cache-key inputs.
17pub mod audit_cache;
18/// Why a persisted cache was refused, shared by the extraction cache, the
19/// graph cache, the perf table, and `fallow doctor`.
20pub mod cache_rejection;
21/// Shared churn output contracts.
22pub mod churn;
23/// Cross-surface strings for the cloud runtime-coverage path, shared by the
24/// CLI's `coverage analyze --cloud` and the MCP cloud runtime-context tool.
25pub mod cloud;
26/// File discovery types: discovered files, file IDs, and entry points.
27pub mod discover;
28/// Shared duplicate-code output contracts.
29pub mod duplicates;
30/// JSON-output envelope and utility types: `SchemaVersion`, `ToolVersion`,
31/// `ElapsedMs`, `AuditIntroduced`, plus the shared `Meta`, `BaselineDeltas`,
32/// `BaselineMatch`, `RegressionResult`, `EntryPoints`, and `CheckSummary`
33/// shapes referenced by every per-command envelope. The structs are always
34/// compiled (the JSON emission layer constructs them at runtime); the
35/// `schemars::JsonSchema` derive is gated per-struct on the `schema` feature.
36pub mod envelope;
37/// Where a fact sits on each JSON envelope shape, shared by the surfaces that
38/// read a saved envelope back rather than holding the run's typed state.
39pub mod envelope_sites;
40/// Module extraction types: exports, imports, re-exports, and member info.
41pub mod extract;
42/// Guard output contracts for pre-edit architecture-rule lookup.
43pub mod guard;
44/// Shared issue-type contract metadata used by CLI, LSP, MCP, and suppression
45/// helpers.
46pub mod issue_meta;
47/// Machine-readable manifest of the fallow MCP server's tools, shared by
48/// `fallow schema` and the telemetry tool-name allowlist; kept in sync with
49/// the live tool router by a drift test in `crates/mcp`.
50pub mod mcp_manifest;
51/// JSON-output augmentation types: `IssueAction` enum + variants.
52/// Schema-side counterpart of the augmentations the JSON layer adds to each
53/// dead-code finding. The structs are always compiled (typed dead-code
54/// wrappers in [`output_dead_code`] consume them at runtime); the
55/// `schemars::JsonSchema` derive is gated per-struct on the `schema`
56/// feature.
57pub mod output;
58/// Typed envelope wrappers for the simple 1:1 dead-code findings
59/// (`UnusedFile`, `PrivateTypeLeak`, `UnresolvedImport`, `CircularDependency`,
60/// `BoundaryViolation`). Each wrapper flattens the bare finding via
61/// `#[serde(flatten)]` and carries a typed `actions` array populated at
62/// construction time, replacing the per-finding post-pass injection that
63/// previously grafted `actions[]` and `introduced` onto the schema. The
64/// `introduced` field is set by the audit pass via JSON map insertion and
65/// is `None` when serialized directly from Rust. The `schemars::JsonSchema`
66/// derive is gated per-struct on the `schema` feature.
67pub mod output_dead_code;
68/// Shared output-format selector used by CLI, config, output, and API layers.
69pub mod output_format;
70/// Per-action types attached to health findings, hotspots, refactoring
71/// targets, and coverage-gap entries. Separated from the generic
72/// `IssueAction` tree in the `output` module so the health-specific
73/// variants live in a dedicated module. The structs are always compiled
74/// (the JSON emission layer constructs them through typed wrappers such as
75/// [`output_health::UntestedFileAction`]); the `schemars::JsonSchema`
76/// derive is gated per-struct on the `schema` feature.
77pub mod output_health;
78/// Cross-platform path classification helpers.
79pub mod path_util;
80/// Analysis result types: unused files, exports, dependencies, and members.
81pub mod results;
82/// Shared TypeScript semantic identity, provenance, API surface, impact, and
83/// public-signature coupling contracts.
84pub mod semantic;
85/// Custom serde serializers for cross-platform path output.
86pub mod serde_path;
87/// Transient source-extraction contracts for provider-backed similar-code analysis.
88pub mod similar_code;
89/// Shared source-file freshness metadata used by cache invalidation.
90pub mod source_fingerprint;
91/// Inline suppression comment types and issue kind definitions.
92pub mod suppress;
93/// Agent task-to-command matrix rows shared by `fallow schema`, the
94/// `init --agents` template, the agent hook block, root `--help`, and the
95/// `fallow://task-matrix` MCP resource. Data only; the CLI owns rendering.
96pub mod task_matrix;
97/// Trace output contracts shared by core, engine, CLI, API, and MCP.
98pub mod trace;
99/// Symbol-level trace-chain output contracts.
100pub mod trace_chain;
101/// Stack-trace frame resolution output contracts (`fallow trace-error`).
102pub mod trace_error;
103/// Workspace and source-discovery diagnostic data types
104/// (`WorkspaceDiagnostic`, `WorkspaceDiagnosticKind`). Re-exported by
105/// `fallow-config` for back-compat; embedded directly by `fallow-output` so
106/// `workspace_diagnostics[]` keeps its typed JSON schema. The
107/// `schemars::JsonSchema` derive is gated on the `schema` feature.
108pub mod workspace;