pub struct ProjectData {
pub paired: C4PairedProjectData,
}Expand description
Legacy ProjectData — a thin wrapper around
knowdit_project::C4PairedProjectData.
All LLM-driven methods (categorize / extract / merge / link /
is_completed) live in [crate::learn::impl ProjectData] and
project this wrapper down to the inner fields via the accessor
methods. Per-call tunables (chunk-input budget, agent step caps,
merge chunking) are passed in as method parameters, not stored
on this struct.
Fields§
§paired: C4PairedProjectDataThe project + optional audit-report payload. Owned so this wrapper can be cloned cheaply and threaded into async tasks.
Implementations§
Source§impl ProjectData
impl ProjectData
Sourcepub async fn categorize_and_extract(
&self,
llm: &LLM,
agent_options: &AgentRunOptions,
chunk_input_budget: Option<usize>,
) -> Result<ExtractResult>
pub async fn categorize_and_extract( &self, llm: &LLM, agent_options: &AgentRunOptions, chunk_input_budget: Option<usize>, ) -> Result<ExtractResult>
Phase 1: Categorize the project and extract semantics. Safe to run concurrently across multiple projects.
Sourcepub async fn categorize_and_extract_semantics(
&self,
llm: &LLM,
agent_options: &AgentRunOptions,
chunk_input_budget: Option<usize>,
) -> Result<ExtractResult>
pub async fn categorize_and_extract_semantics( &self, llm: &LLM, agent_options: &AgentRunOptions, chunk_input_budget: Option<usize>, ) -> Result<ExtractResult>
Categorize the project and extract only project semantics. This is used by consumers that need semantic context but do not need audit findings.
Sourcepub async fn merge_and_write(
&self,
db: &HistoricalDatabase,
llm: &LLM,
extract: &ExtractResult,
agent_options: &AgentRunOptions,
merge_chunking: MergeChunkingOptions,
) -> Result<()>
pub async fn merge_and_write( &self, db: &HistoricalDatabase, llm: &LLM, extract: &ExtractResult, agent_options: &AgentRunOptions, merge_chunking: MergeChunkingOptions, ) -> Result<()>
Phase 2: Merge extracted semantics with existing KB and write to DB. MUST be run serially (one project at a time) to avoid merge conflicts. Commit one project’s full merge output to the historical KG.
Begins its own transaction via
HistoricalDatabase::write_project_completed under the
hood and discards the new-canonical id list. Use this when
the caller doesn’t need to compose additional writes
(pending_semantic enqueue etc.) inside the same
transaction. Bulk learn paths (learn moves / learn c4
/ learn projects) go through here because they never run
retro-link.
Sourcepub async fn merge_and_write_txn(
&self,
conn: &DatabaseTransaction,
db: &HistoricalDatabase,
llm: &LLM,
extract: &ExtractResult,
agent_options: &AgentRunOptions,
merge_chunking: MergeChunkingOptions,
) -> Result<Vec<i32>>
pub async fn merge_and_write_txn( &self, conn: &DatabaseTransaction, db: &HistoricalDatabase, llm: &LLM, extract: &ExtractResult, agent_options: &AgentRunOptions, merge_chunking: MergeChunkingOptions, ) -> Result<Vec<i32>>
Transaction-scoped variant of Self::merge_and_write.
Performs the merge-LLM passes (against the LIVE DB — these
are reads, not writes, so don’t depend on the txn) and then
writes the resulting rows through
HistoricalDatabase::write_project_completed_txn using
the supplied transaction. Returns the canonical semantic
ids this project newly introduced, so the caller can chain
HistoricalDatabase::enqueue_pending_canonical_semantics_txn
in the same transaction when needed (incremental
workflow learn flow).
Sourcepub async fn is_completed(&self, db: &HistoricalDatabase) -> Result<bool>
pub async fn is_completed(&self, db: &HistoricalDatabase) -> Result<bool>
Check if this project is already completed in the DB.
Sourcepub async fn extract_semantics(
&self,
llm: &LLM,
categories: &[DeFiCategory],
agent_options: &AgentRunOptions,
chunk_input_budget: Option<usize>,
) -> Result<Vec<ExtractedSemantic>>
pub async fn extract_semantics( &self, llm: &LLM, categories: &[DeFiCategory], agent_options: &AgentRunOptions, chunk_input_budget: Option<usize>, ) -> Result<Vec<ExtractedSemantic>>
Extract semantics from the project’s source files. Splits the source
text into chunks that fit the context window and runs one Agent per
chunk; each chunk’s semantics are emitted via emit_semantic tool
calls and the chunk is closed with finalize_semantic_extraction.
Source§impl ProjectData
impl ProjectData
Sourcepub async fn from_path_spec(spec: &str) -> Result<Self>
pub async fn from_path_spec(spec: &str) -> Result<Self>
Parse name:path / name:path:platform_id and load the
project as Solidity (no language auto-detection).
Sourcepub async fn from_source_dir_spec(spec: &str) -> Result<Self>
pub async fn from_source_dir_spec(spec: &str) -> Result<Self>
Parse name:path / name:path:platform_id and load the
project, auto-detecting Solidity vs Move.
Sourcepub async fn from_dir(
name: &str,
root_dir: &Path,
platform_id: Option<&str>,
) -> Result<Self>
pub async fn from_dir( name: &str, root_dir: &Path, platform_id: Option<&str>, ) -> Result<Self>
Solidity-only loader over a known directory.
Sourcepub async fn from_c4(dataset_dir: &Path, contest_id: u32) -> Result<Self>
pub async fn from_c4(dataset_dir: &Path, contest_id: u32) -> Result<Self>
Load a Code4rena contest: (audit_meta + source contracts + markdown report). The wrapper preserves the audit material
inside the underlying C4PairedProjectData.audit so the
learn-pipeline’s prompt builders pick it up automatically.
Sourcepub async fn from_move_snapshot(
name: &str,
root_dir: &Path,
commit_hash: &str,
audit_report: Option<MoveVulnerabilitySnippet>,
) -> Result<Self>
pub async fn from_move_snapshot( name: &str, root_dir: &Path, commit_hash: &str, audit_report: Option<MoveVulnerabilitySnippet>, ) -> Result<Self>
Load a Move snapshot, optionally paired with its vulnerability-snippet audit report.
Sourcepub fn from_project_view(view: &ProjectData) -> Self
pub fn from_project_view(view: &ProjectData) -> Self
Adapt a knowdit_project::ProjectData view (no audit) into
this legacy shape. Per-call tunables like
extract_chunk_input_budget are no longer carried on the
project — they flow as method parameters into the learn
pipeline.
pub fn name(&self) -> &str
pub fn platform_id(&self) -> Option<&str>
pub fn root_dir(&self) -> &Path
pub fn source_language(&self) -> SourceLanguage
pub fn source_files(&self) -> &[SourceFile]
pub fn audit_report(&self) -> Option<&AuditReportMaterial>
Sourcepub fn display_id(&self) -> String
pub fn display_id(&self) -> String
Display-friendly identifier: platform_id when set,
otherwise the project name. Returns an owned String to
keep call-site ergonomics stable — earlier versions had this
shape and a number of format!() sites still expect it.
Trait Implementations§
Source§impl Clone for ProjectData
impl Clone for ProjectData
Source§fn clone(&self) -> ProjectData
fn clone(&self) -> ProjectData
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ProjectData
impl RefUnwindSafe for ProjectData
impl Send for ProjectData
impl Sync for ProjectData
impl Unpin for ProjectData
impl UnsafeUnpin for ProjectData
impl UnwindSafe for ProjectData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read moreSource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
Source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
Source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);