0.7.28 - final
This commit is contained in:
@@ -10,6 +10,31 @@
|
||||
use tauri::Manager;
|
||||
use ts_rs::TS;
|
||||
|
||||
/// Request payload for program instruction discriminator summaries.
|
||||
#[derive(Clone, Debug, serde::Deserialize, ts_rs::TS)]
|
||||
#[ts(
|
||||
export,
|
||||
export_to = "../frontend/ts/bindings/DemoPipeline2ProgramInstructionDiscriminatorSummaryRequest.ts"
|
||||
)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct DemoPipeline2ProgramInstructionDiscriminatorSummaryRequest {
|
||||
/// Program id to inspect.
|
||||
pub program_id: std::string::String,
|
||||
/// Maximum number of instruction rows to inspect before grouping.
|
||||
pub limit: u32,
|
||||
}
|
||||
|
||||
/// Response payload for program instruction discriminator summaries.
|
||||
#[derive(Clone, Debug, serde::Serialize, ts_rs::TS)]
|
||||
#[ts(
|
||||
export,
|
||||
export_to = "../frontend/ts/bindings/DemoPipeline2ProgramInstructionDiscriminatorSummaryPayload.ts"
|
||||
)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct DemoPipeline2ProgramInstructionDiscriminatorSummaryPayload {
|
||||
/// Pretty JSON summary rows.
|
||||
pub summaries_json: std::string::String,
|
||||
}
|
||||
|
||||
/// Request payload for protocol candidate summary diagnostics.
|
||||
#[derive(Clone, Debug, serde::Deserialize, ts_rs::TS)]
|
||||
@@ -35,9 +60,6 @@ pub(crate) struct DemoPipeline2ProtocolCandidateSummaryPayload {
|
||||
pub summaries_json: std::string::String,
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// Local diagnostics payload returned to the UI.
|
||||
#[derive(Clone, Debug, serde::Serialize, TS)]
|
||||
#[ts(
|
||||
@@ -718,6 +740,43 @@ pub(crate) struct DemoPipeline2PairCandlesPayload {
|
||||
pub candles_json: std::string::String,
|
||||
}
|
||||
|
||||
/// Lists program instruction discriminator summaries for one program id.
|
||||
#[tauri::command]
|
||||
pub(crate) async fn demo_pipeline2_get_program_instruction_discriminator_summaries(
|
||||
state: tauri::State<'_, crate::AppState>,
|
||||
request: DemoPipeline2ProgramInstructionDiscriminatorSummaryRequest,
|
||||
) -> Result<DemoPipeline2ProgramInstructionDiscriminatorSummaryPayload, std::string::String> {
|
||||
if request.program_id.trim().is_empty() {
|
||||
return Err("program id must not be empty".to_string());
|
||||
}
|
||||
if request.limit == 0 {
|
||||
return Err("instruction discriminator summary limit must be > 0".to_string());
|
||||
}
|
||||
let rows_result = kb_lib::query_program_instruction_discriminator_summaries_list_by_program_id(
|
||||
state.database.as_ref(),
|
||||
request.program_id.as_str(),
|
||||
request.limit,
|
||||
)
|
||||
.await;
|
||||
let rows = match rows_result {
|
||||
Ok(rows) => rows,
|
||||
Err(error) => {
|
||||
return Err(format!(
|
||||
"cannot list instruction discriminator summaries for program_id '{}': {}",
|
||||
request.program_id, error
|
||||
));
|
||||
},
|
||||
};
|
||||
let summaries_json_result = serde_json::to_string_pretty(&rows);
|
||||
let summaries_json = match summaries_json_result {
|
||||
Ok(summaries_json) => summaries_json,
|
||||
Err(error) => {
|
||||
return Err(format!("cannot serialize instruction discriminator summaries: {}", error));
|
||||
},
|
||||
};
|
||||
return Ok(DemoPipeline2ProgramInstructionDiscriminatorSummaryPayload { summaries_json });
|
||||
}
|
||||
|
||||
/// Lists protocol candidate summaries ordered by investigation priority.
|
||||
#[tauri::command]
|
||||
pub(crate) async fn demo_pipeline2_get_protocol_candidate_summaries(
|
||||
@@ -745,10 +804,7 @@ pub(crate) async fn demo_pipeline2_get_protocol_candidate_summaries(
|
||||
let summaries_json = match summaries_json_result {
|
||||
Ok(summaries_json) => summaries_json,
|
||||
Err(error) => {
|
||||
return Err(format!(
|
||||
"cannot serialize protocol candidate summaries: {}",
|
||||
error
|
||||
));
|
||||
return Err(format!("cannot serialize protocol candidate summaries: {}", error));
|
||||
},
|
||||
};
|
||||
return Ok(DemoPipeline2ProtocolCandidateSummaryPayload { summaries_json });
|
||||
@@ -783,14 +839,14 @@ pub(crate) async fn demo_pipeline2_diagnose_local_pipeline(
|
||||
})
|
||||
}
|
||||
|
||||
/// Validates the local pipeline with the strict `0.7.27` non-regression profile.
|
||||
/// Validates the local pipeline with the `0.7.28` multi-DEX non-regression profile.
|
||||
#[tauri::command]
|
||||
pub(crate) async fn demo_pipeline2_validate_local_pipeline(
|
||||
state: tauri::State<'_, crate::AppState>,
|
||||
) -> Result<DemoPipeline2LocalValidationPayload, std::string::String> {
|
||||
let database = state.database.clone();
|
||||
let service = kb_lib::LocalPipelineValidationService::new(database.clone());
|
||||
let run_result = service.validate_v0_7_27_current_database().await;
|
||||
let run_result = service.validate_v0_7_28_current_database().await;
|
||||
let run = match run_result {
|
||||
Ok(run) => run,
|
||||
Err(error) => {
|
||||
|
||||
@@ -154,6 +154,7 @@ pub async fn run() -> Result<(), kb_lib::Error> {
|
||||
crate::demo_pipeline2::demo_pipeline2_diagnose_local_pipeline,
|
||||
crate::demo_pipeline2::demo_pipeline2_validate_local_pipeline,
|
||||
crate::demo_pipeline2::demo_pipeline2_get_protocol_candidate_summaries,
|
||||
crate::demo_pipeline2::demo_pipeline2_get_program_instruction_discriminator_summaries,
|
||||
]);
|
||||
tauri_builder = tauri_builder.plugin(tracing_builder.build::<tauri::Wry>());
|
||||
tauri_builder = tauri_builder.setup(|app| {
|
||||
|
||||
Reference in New Issue
Block a user