v0.1.0-pre.061

This commit is contained in:
2026-07-28 18:41:30 +02:00
parent c7bad46f50
commit f40fb78817
527 changed files with 4598 additions and 4114 deletions

View File

@@ -178,7 +178,7 @@ pub(crate) struct DemoBackfillSummaryPayload {
/// Number of source attempts.
#[ts(type = "number")]
pub(crate) attempts: u64,
/// Whether the operator cancelled the campaign.
/// Whether the operator canceled the campaign.
pub(crate) cancelled: bool,
/// Optional cursor for continuing an older-history scan.
pub(crate) resume_before_signature: std::option::Option<std::string::String>,

View File

@@ -1,11 +1,25 @@
// file: kb-app-demo-desktop/src/demo_core_extraction.rs
// version: 10
// version: 11
//! Tauri commands and UI payloads for canonical transaction to core extraction.
use tauri::Emitter; // rust-rules: trait-import
use ts_rs::TS; // rust-rules: derive-import
/// One registered program offered as a non-blocking core extraction suggestion.
#[derive(Clone, Debug, serde::Serialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(
export,
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_core_extraction/DemoCoreExtractionProgramOption.ts"
)]
pub(crate) struct DemoCoreExtractionProgramOption {
/// Stable registry code.
pub(crate) code: std::string::String,
/// Canonical Solana program id.
pub(crate) program_id: std::string::String,
}
/// Initial options shown by the core extraction demo.
#[derive(Clone, Debug, serde::Serialize, TS)]
#[serde(rename_all = "camelCase")]
@@ -22,6 +36,8 @@ pub(crate) struct DemoCoreExtractionOptionsPayload {
pub(crate) default_max_concurrent_extractions: u32,
/// Whether one extraction campaign is currently running.
pub(crate) running: bool,
/// Registered program ids offered without restricting free text entry.
pub(crate) programs: std::vec::Vec<crate::DemoCoreExtractionProgramOption>,
}
/// UI request for one bounded core extraction campaign.
@@ -166,6 +182,15 @@ pub(crate) fn demo_core_extraction_options_payload(
default_limit: 100,
default_max_concurrent_extractions: 4,
running: state.demo_core_extraction_running().load(std::sync::atomic::Ordering::Acquire),
programs: kb_program_ids::registered_program_ids()
.iter()
.map(|entry| {
return crate::DemoCoreExtractionProgramOption {
code: entry.code().to_string(),
program_id: entry.program_id().to_string(),
};
})
.collect(),
};
}

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_decode_replay.rs
// version: 30
// version: 32
//! Tauri commands and UI payloads for contextual instruction decode replay.
@@ -143,9 +143,12 @@ pub(crate) struct DemoDecodeProcessorSummaryPayload {
/// Unsupported input count.
#[ts(type = "number")]
pub(crate) unsupported: u64,
/// Failed input count.
/// Explicit decoder failure count.
#[ts(type = "number")]
pub(crate) failed: u64,
/// Orchestration, storage or other processing error count.
#[ts(type = "number")]
pub(crate) processing_errors: u64,
/// Materialized output count.
#[ts(type = "number")]
pub(crate) materialized_outputs: u64,
@@ -181,9 +184,12 @@ pub(crate) struct DemoDecodeReplaySummaryPayload {
/// Number never started after cancellation.
#[ts(type = "number")]
pub(crate) not_started: u64,
/// Number of failed contextual inputs.
/// Number of inputs returning an explicit decoder failure.
#[ts(type = "number")]
pub(crate) failed_inputs: u64,
/// Number of inputs interrupted by orchestration, storage or processing errors.
#[ts(type = "number")]
pub(crate) processing_error_inputs: u64,
/// Whether cancellation was observed.
pub(crate) cancelled: bool,
/// Per-processor counters.
@@ -544,6 +550,7 @@ pub(crate) fn demo_decode_replay_summary_payload(
unmatched: summary.unmatched,
not_started: summary.not_started,
failed_inputs: summary.failed_inputs,
processing_error_inputs: summary.processing_error_inputs,
cancelled: summary.cancelled,
processors: summary
.processors
@@ -558,6 +565,7 @@ pub(crate) fn demo_decode_replay_summary_payload(
ignored: processor.ignored,
unsupported: processor.unsupported,
failed: processor.failed,
processing_errors: processor.processing_errors,
materialized_outputs: processor.materialized_outputs,
materialization_refused: processor.materialization_refused,
};
@@ -733,7 +741,7 @@ mod tests {
}
#[test]
fn native_memo_token2022_elgamal_classic_token_and_ata_decoders_are_registered() {
fn native_memo_token_2022_elgamal_classic_token_and_ata_decoders_are_registered() {
let decoders = crate::available_decoders();
assert_eq!(decoders.len(), 7);
let mut names = decoders
@@ -748,7 +756,7 @@ mod tests {
"spl_elgamal_registry".to_string(),
"spl_memo".to_string(),
"spl_token".to_string(),
"spl_token2022".to_string(),
"spl_token_2022".to_string(),
];
expected_names.sort();
assert_eq!(names, expected_names);

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_execution_solana_core.rs
// version: 5
// version: 6
//! Tauri adapter for bounded Solana Core execution on Devnet.
@@ -187,9 +187,12 @@ pub(crate) struct DemoExecutionSolanaCoreSummaryPayload {
/// Contextual decode inputs completed after submission.
#[ts(type = "number | null")]
pub(crate) decode_completed: std::option::Option<u64>,
/// Contextual decode input failures after submission.
/// Explicit contextual decoder failures after submission.
#[ts(type = "number | null")]
pub(crate) decode_failed_inputs: std::option::Option<u64>,
/// Contextual decode processing or storage errors after submission.
#[ts(type = "number | null")]
pub(crate) decode_processing_error_inputs: std::option::Option<u64>,
/// Pretty JSON representation of the exact execution plan.
pub(crate) plan_json: std::string::String,
/// Pretty JSON representation of the simulation result.
@@ -421,6 +424,8 @@ pub(crate) fn demo_execution_solana_core_summary_payload(
let decode_completed = summary.decode_replay.as_ref().map(|value| return value.completed);
let decode_failed_inputs =
summary.decode_replay.as_ref().map(|value| return value.failed_inputs);
let decode_processing_error_inputs =
summary.decode_replay.as_ref().map(|value| return value.processing_error_inputs);
let diagnostics_value = serde_json::json!({
"airdropConfirmation": summary.airdrop_confirmation.as_ref(),
"confirmation": summary.confirmation.as_ref(),
@@ -449,6 +454,7 @@ pub(crate) fn demo_execution_solana_core_summary_payload(
"completed": value.completed,
"unmatched": value.unmatched,
"failedInputs": value.failed_inputs,
"processingErrorInputs": value.processing_error_inputs,
"cancelled": value.cancelled
});
})
@@ -477,6 +483,7 @@ pub(crate) fn demo_execution_solana_core_summary_payload(
core_extracted,
decode_completed,
decode_failed_inputs,
decode_processing_error_inputs,
plan_json,
simulation_json,
diagnostics_json,
@@ -507,9 +514,11 @@ pub(crate) fn demo_execution_solana_core_memo_summary_payload(
summary.post_execution.as_ref().is_some_and(|value| return value.materialized);
let idempotence_validated = summary.idempotence_replay.as_ref().is_some_and(|replay| {
return replay.failed_inputs == 0
&& replay.processing_error_inputs == 0
&& !replay.cancelled
&& replay.processors.iter().all(|processor| {
return processor.failed == 0
&& processor.processing_errors == 0
&& processor.materialized_outputs == 0
&& processor.materialization_refused == 0;
})
@@ -546,6 +555,7 @@ pub(crate) fn demo_execution_solana_core_memo_summary_payload(
"selected": value.selected,
"completed": value.completed,
"failedInputs": value.failed_inputs,
"processingErrorInputs": value.processing_error_inputs,
"processors": value.processors.iter().map(|processor| {
return serde_json::json!({
"name": processor.processor_name,
@@ -553,6 +563,7 @@ pub(crate) fn demo_execution_solana_core_memo_summary_payload(
"decoded": processor.decoded,
"skipped": processor.skipped,
"failed": processor.failed,
"processingErrors": processor.processing_errors,
"materializedOutputs": processor.materialized_outputs,
"materializationRefused": processor.materialization_refused
});
@@ -565,6 +576,7 @@ pub(crate) fn demo_execution_solana_core_memo_summary_payload(
"selected": value.selected,
"completed": value.completed,
"failedInputs": value.failed_inputs,
"processingErrorInputs": value.processing_error_inputs,
"processors": value.processors.iter().map(|processor| {
return serde_json::json!({
"name": processor.processor_name,
@@ -572,6 +584,7 @@ pub(crate) fn demo_execution_solana_core_memo_summary_payload(
"decoded": processor.decoded,
"skipped": processor.skipped,
"failed": processor.failed,
"processingErrors": processor.processing_errors,
"materializedOutputs": processor.materialized_outputs,
"materializationRefused": processor.materialization_refused
});

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_spl_ata.rs
// version: 4
// version: 7
//! Thin Tauri adapter for ATA execution, derivation and lifecycle journal reads.
@@ -19,7 +19,7 @@ pub(crate) struct DemoExecutionSplAtaRequest {
pub(crate) wallet_owner: std::string::String,
/// Mint account.
pub(crate) mint: std::string::String,
/// `classic` or `token2022`.
/// `classic` or `token_2022`.
pub(crate) token_program: std::string::String,
/// `create` or `create_idempotent`.
pub(crate) mode: std::string::String,
@@ -43,7 +43,7 @@ pub(crate) struct DemoSplAtaDerivationRequest {
pub(crate) profile_name: std::string::String,
/// Mint account.
pub(crate) mint: std::string::String,
/// `classic` or `token2022`.
/// `classic` or `token_2022`.
pub(crate) token_program: std::string::String,
}
@@ -185,8 +185,8 @@ pub(crate) fn parse_token_program(
) -> std::result::Result<kb_lib::ExSplAssociatedTokenProgram, std::string::String> {
return match value.trim() {
"classic" => std::result::Result::Ok(kb_lib::ExSplAssociatedTokenProgram::Classic),
"token2022" => std::result::Result::Ok(kb_lib::ExSplAssociatedTokenProgram::Token2022),
_ => std::result::Result::Err("Token Program must be classic or token2022".to_string()),
"token_2022" => std::result::Result::Ok(kb_lib::ExSplAssociatedTokenProgram::Token2022),
_ => std::result::Result::Err("Token Program must be classic or token_2022".to_string()),
};
}
@@ -247,8 +247,10 @@ pub(crate) fn demo_spl_ata_summary_payload(
});
let idempotence_validated = summary.idempotence_replay.as_ref().is_some_and(|replay| {
return replay.failed_inputs == 0
&& replay.processing_error_inputs == 0
&& replay.processors.iter().all(|processor| {
return processor.failed == 0
&& processor.processing_errors == 0
&& processor.materialized_outputs == 0
&& processor.materialization_refused == 0;
});
@@ -289,6 +291,7 @@ pub(crate) fn demo_spl_ata_summary_payload(
"completed": value.completed,
"unmatched": value.unmatched,
"failedInputs": value.failed_inputs,
"processingErrorInputs": value.processing_error_inputs,
"cancelled": value.cancelled
});
}),
@@ -299,6 +302,7 @@ pub(crate) fn demo_spl_ata_summary_payload(
"completed": value.completed,
"unmatched": value.unmatched,
"failedInputs": value.failed_inputs,
"processingErrorInputs": value.processing_error_inputs,
"cancelled": value.cancelled,
"materializedOutputs": value.processors.iter().map(|processor| {
return processor.materialized_outputs;
@@ -397,15 +401,15 @@ pub(crate) fn journal_row(row: kb_store::MaterializedEventQueryRow) -> crate::De
#[cfg(test)]
mod tests {
#[test]
fn classic_and_token2022_derivations_are_distinct_and_canonical() {
fn classic_and_token_2022_derivations_are_distinct_and_canonical() {
let wallet = kb_program_ids::SYSTEM_PROGRAM_ID;
let mint = "So11111111111111111111111111111111111111112";
let classic = crate::derive_ata(wallet, mint, kb_program_ids::SPL_TOKEN_PROGRAM_ID)
.unwrap_or_else(|error| panic!("classic derivation failed: {error}"));
let token2022 = crate::derive_ata(wallet, mint, kb_program_ids::SPL_TOKEN2022_PROGRAM_ID)
let token_2022 = crate::derive_ata(wallet, mint, kb_program_ids::SPL_TOKEN_2022_PROGRAM_ID)
.unwrap_or_else(|error| panic!("Token-2022 derivation failed: {error}"));
assert_eq!(classic, "aqxoAhCwpy3oB1BpNw9hL1HdLYLgPpbPjzxDrrQj3Fs");
assert_eq!(token2022, "2sZUUBGq1i6aE47ZoxCaCW89jmYm2EXLPPmNMgMDXHMS");
assert_eq!(token_2022, "2sZUUBGq1i6aE47ZoxCaCW89jmYm2EXLPPmNMgMDXHMS");
}
#[test]

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_spl_token.rs
// version: 2
// version: 3
//! Thin Tauri adapter for classic SPL Token execution and materialized journals.
@@ -172,9 +172,11 @@ pub(crate) fn demo_spl_token_summary_payload(
let decode_replayed = post_execution.is_some_and(|value| return value.decode_replayed);
let idempotence_validated = summary.idempotence_replay.as_ref().is_some_and(|replay| {
return replay.failed_inputs == 0
&& replay.processing_error_inputs == 0
&& !replay.cancelled
&& replay.processors.iter().all(|processor| {
return processor.failed == 0
&& processor.processing_errors == 0
&& processor.materialized_outputs == 0
&& processor.materialization_refused == 0;
});
@@ -248,6 +250,7 @@ fn replay_diagnostics(summary: &kb_pipeline::DecodeReplaySummary) -> serde_json:
"selected": summary.selected,
"completed": summary.completed,
"failedInputs": summary.failed_inputs,
"processingErrorInputs": summary.processing_error_inputs,
"cancelled": summary.cancelled,
"processors": summary.processors.iter().map(|processor| {
return serde_json::json!({
@@ -256,6 +259,7 @@ fn replay_diagnostics(summary: &kb_pipeline::DecodeReplaySummary) -> serde_json:
"decoded": processor.decoded,
"skipped": processor.skipped,
"failed": processor.failed,
"processingErrors": processor.processing_errors,
"materializedOutputs": processor.materialized_outputs,
"materializationRefused": processor.materialization_refused
});

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_spl_token2022.rs
// version: 4
// file: kb-app-demo-desktop/src/demo_spl_token_2022.rs
// version: 6
//! Thin Tauri adapter for independent public Token-2022 Devnet validation scenarios.
@@ -10,7 +10,7 @@ use ts_rs::TS; // rust-rules: derive-import
#[serde(rename_all = "camelCase")]
#[ts(
export,
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_spl_token2022/DemoSplToken2022FixturePayload.ts"
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_spl_token_2022/DemoSplToken2022FixturePayload.ts"
)]
pub(crate) struct DemoSplToken2022FixturePayload {
/// Fixture file used by the application.
@@ -42,7 +42,7 @@ pub(crate) struct DemoSplToken2022FixturePayload {
#[serde(rename_all = "camelCase")]
#[ts(
export,
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_spl_token2022/DemoExecutionSplToken2022Request.ts"
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_spl_token_2022/DemoExecutionSplToken2022Request.ts"
)]
pub(crate) struct DemoExecutionSplToken2022Request {
/// Selected Devnet profile.
@@ -78,7 +78,7 @@ pub(crate) struct DemoExecutionSplToken2022Request {
#[serde(rename_all = "camelCase")]
#[ts(
export,
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_spl_token2022/DemoExecutionSplToken2022SummaryPayload.ts"
export_to = "../frontend/ts/bindings/kb_app_demo_desktop/demo_spl_token_2022/DemoExecutionSplToken2022SummaryPayload.ts"
)]
pub(crate) struct DemoExecutionSplToken2022SummaryPayload {
/// Stable scenario identifier.
@@ -137,14 +137,14 @@ pub(crate) fn operation_from_request(
multisig_signers: std::vec::Vec::new(),
};
let value = match request.scenario_id.trim() {
"token2022_mint_to_checked" => kb_lib::ExSplTokenSingleOperation::MintToChecked {
"token_2022_mint_to_checked" => kb_lib::ExSplTokenSingleOperation::MintToChecked {
mint: kb_lib::MdPubkey(request.mint.trim().to_string()),
destination: kb_lib::MdPubkey(request.source.trim().to_string()),
authority,
amount: kb_lib::ExSplTokenAmount(request.amount_raw.trim().to_string()),
decimals: request.decimals,
},
"token2022_transfer_checked" => kb_lib::ExSplTokenSingleOperation::TransferChecked {
"token_2022_transfer_checked" => kb_lib::ExSplTokenSingleOperation::TransferChecked {
source: kb_lib::MdPubkey(request.source.trim().to_string()),
mint: kb_lib::MdPubkey(request.mint.trim().to_string()),
destination: kb_lib::MdPubkey(request.destination.trim().to_string()),
@@ -152,7 +152,7 @@ pub(crate) fn operation_from_request(
amount: kb_lib::ExSplTokenAmount(request.amount_raw.trim().to_string()),
decimals: request.decimals,
},
"token2022_approve_checked" => kb_lib::ExSplTokenSingleOperation::ApproveChecked {
"token_2022_approve_checked" => kb_lib::ExSplTokenSingleOperation::ApproveChecked {
source: kb_lib::MdPubkey(request.source.trim().to_string()),
mint: kb_lib::MdPubkey(request.mint.trim().to_string()),
delegate: kb_lib::MdPubkey(request.delegate.trim().to_string()),
@@ -160,28 +160,28 @@ pub(crate) fn operation_from_request(
amount: kb_lib::ExSplTokenAmount(request.amount_raw.trim().to_string()),
decimals: request.decimals,
},
"token2022_revoke" => kb_lib::ExSplTokenSingleOperation::Revoke {
"token_2022_revoke" => kb_lib::ExSplTokenSingleOperation::Revoke {
source: kb_lib::MdPubkey(request.source.trim().to_string()),
authority,
},
"token2022_burn_checked" => kb_lib::ExSplTokenSingleOperation::BurnChecked {
"token_2022_burn_checked" => kb_lib::ExSplTokenSingleOperation::BurnChecked {
source: kb_lib::MdPubkey(request.source.trim().to_string()),
mint: kb_lib::MdPubkey(request.mint.trim().to_string()),
authority,
amount: kb_lib::ExSplTokenAmount(request.amount_raw.trim().to_string()),
decimals: request.decimals,
},
"token2022_freeze_account" => kb_lib::ExSplTokenSingleOperation::FreezeAccount {
"token_2022_freeze_account" => kb_lib::ExSplTokenSingleOperation::FreezeAccount {
account: kb_lib::MdPubkey(request.source.trim().to_string()),
mint: kb_lib::MdPubkey(request.mint.trim().to_string()),
authority: freeze_authority,
},
"token2022_thaw_account" => kb_lib::ExSplTokenSingleOperation::ThawAccount {
"token_2022_thaw_account" => kb_lib::ExSplTokenSingleOperation::ThawAccount {
account: kb_lib::MdPubkey(request.source.trim().to_string()),
mint: kb_lib::MdPubkey(request.mint.trim().to_string()),
authority: freeze_authority,
},
"token2022_close_destination" => kb_lib::ExSplTokenSingleOperation::CloseAccount {
"token_2022_close_destination" => kb_lib::ExSplTokenSingleOperation::CloseAccount {
account: kb_lib::MdPubkey(request.source.trim().to_string()),
destination: kb_lib::MdPubkey(request.destination.trim().to_string()),
authority,
@@ -197,7 +197,7 @@ pub(crate) fn operation_from_request(
});
}
pub(crate) fn demo_spl_token2022_summary_payload(
pub(crate) fn demo_spl_token_2022_summary_payload(
scenario_id: std::string::String,
operation: std::string::String,
summary: kb_pipeline_demo_scenarios::DevnetSplToken2022ExecutionSummary,
@@ -216,9 +216,11 @@ pub(crate) fn demo_spl_token2022_summary_payload(
let decode_replayed = post_execution.is_some_and(|value| return value.decode_replayed);
let idempotence_validated = summary.idempotence_replay.as_ref().is_some_and(|replay| {
return replay.failed_inputs == 0
&& replay.processing_error_inputs == 0
&& !replay.cancelled
&& replay.processors.iter().all(|processor| {
return processor.failed == 0
&& processor.processing_errors == 0
&& processor.materialized_outputs == 0
&& processor.materialization_refused == 0;
});
@@ -340,6 +342,7 @@ fn decode_replay_summary_json(summary: &kb_pipeline::DecodeReplaySummary) -> ser
"ignored": processor.ignored,
"unsupported": processor.unsupported,
"failed": processor.failed,
"processingErrors": processor.processing_errors,
"materializedOutputs": processor.materialized_outputs,
"materializationRefused": processor.materialization_refused
});
@@ -354,6 +357,7 @@ fn decode_replay_summary_json(summary: &kb_pipeline::DecodeReplaySummary) -> ser
"unmatched": summary.unmatched,
"notStarted": summary.not_started,
"failedInputs": summary.failed_inputs,
"processingErrorInputs": summary.processing_error_inputs,
"cancelled": summary.cancelled,
"processors": processors,
"startedAt": summary.started_at,
@@ -384,14 +388,14 @@ mod tests {
#[test]
fn every_public_scenario_builds_one_typed_operation() {
for scenario in [
"token2022_mint_to_checked",
"token2022_transfer_checked",
"token2022_approve_checked",
"token2022_revoke",
"token2022_burn_checked",
"token2022_freeze_account",
"token2022_thaw_account",
"token2022_close_destination",
"token_2022_mint_to_checked",
"token_2022_transfer_checked",
"token_2022_approve_checked",
"token_2022_revoke",
"token_2022_burn_checked",
"token_2022_freeze_account",
"token_2022_thaw_account",
"token_2022_close_destination",
] {
assert!(crate::operation_from_request(&request(scenario)).is_ok());
}

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_sql_common.rs
// version: 10
// version: 11
//! Shared SQL demo helpers and serializable payloads.
@@ -138,7 +138,10 @@ pub(crate) async fn initialize_postgres_schema_for_startup(
tracing::debug!(target: crate::TRACING_TARGET, backend = profile.database.backend.as_str(), "database backend is not postgres; skip SQL schema initialization");
return;
}
let options_result = postgres_store_options_from_profile(profile, false);
let options_result = postgres_store_options_from_profile(
profile,
profile.database.postgres.auto_initialize_schema,
);
let mut options = match options_result {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => {

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/demo_ws.rs
// version: 16
// version: 17
//! Standard Solana WebSocket demo commands backed by `kb_onchain_transport::WsSession`.
@@ -922,7 +922,7 @@ mod tests {
);
let program = super::build_standard_ws_request(
"programSubscribe",
std::option::Option::Some(kb_program_ids::SPL_TOKEN2022_PROGRAM_ID.to_string()),
std::option::Option::Some(kb_program_ids::SPL_TOKEN_2022_PROGRAM_ID.to_string()),
std::option::Option::None,
std::option::Option::Some(r#"{"encoding":"jsonParsed"}"#.to_string()),
);

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/lib.rs
// version: 11
// version: 13
//! Tauri desktop demo application for `khadhroony-bot3`.
@@ -18,7 +18,7 @@ mod demo_execution_spl;
mod demo_http;
mod demo_spl_ata;
mod demo_spl_token;
mod demo_spl_token2022;
mod demo_spl_token_2022;
mod demo_sql_common;
mod demo_sql_diag;
mod demo_sql_pg_core;
@@ -66,6 +66,8 @@ pub(crate) use self::demo_core_extraction::DemoCoreExtractionObserver;
/// Internal demo core extraction item.
pub(crate) use self::demo_core_extraction::DemoCoreExtractionOptionsPayload;
/// Internal demo core extraction item.
pub(crate) use self::demo_core_extraction::DemoCoreExtractionProgramOption;
/// Internal demo core extraction item.
pub(crate) use self::demo_core_extraction::DemoCoreExtractionProgressPayload;
/// Internal demo core extraction item.
pub(crate) use self::demo_core_extraction::DemoCoreExtractionRequest;
@@ -95,7 +97,7 @@ pub(crate) use self::demo_decode_replay::DemoDecodeReplayDecoderOption;
pub(crate) use self::demo_decode_replay::DemoDecodeReplayObserver;
/// Internal demo decode replay item.
pub(crate) use self::demo_decode_replay::DemoDecodeReplayOptionsPayload;
/// One known program suggested by the free-form Program ID field.
/// Internal demo decode replay program option.
pub(crate) use self::demo_decode_replay::DemoDecodeReplayProgramOption;
/// Internal demo decode replay item.
pub(crate) use self::demo_decode_replay::DemoDecodeReplayProgressPayload;
@@ -220,17 +222,17 @@ pub(crate) use self::demo_spl_token::payload_matches;
/// Loads a bounded, typed journal of committed classic SPL Token projections.
pub(crate) use self::demo_spl_token::validate_journal_request;
/// Request for one independent public Token-2022 Devnet scenario.
pub(crate) use self::demo_spl_token2022::DemoExecutionSplToken2022Request;
pub(crate) use self::demo_spl_token_2022::DemoExecutionSplToken2022Request;
/// UI-safe result of one public Token-2022 Devnet orchestration.
pub(crate) use self::demo_spl_token2022::DemoExecutionSplToken2022SummaryPayload;
pub(crate) use self::demo_spl_token_2022::DemoExecutionSplToken2022SummaryPayload;
/// Public values loaded from one persisted Token-2022 validation fixture.
pub(crate) use self::demo_spl_token2022::DemoSplToken2022FixturePayload;
pub(crate) use self::demo_spl_token_2022::DemoSplToken2022FixturePayload;
/// ????
pub(crate) use self::demo_spl_token2022::demo_spl_token2022_summary_payload;
pub(crate) use self::demo_spl_token_2022::demo_spl_token_2022_summary_payload;
/// ????
pub(crate) use self::demo_spl_token2022::operation_from_request;
pub(crate) use self::demo_spl_token_2022::operation_from_request;
/// ????
pub(crate) use self::demo_spl_token2022::parse_fixture;
pub(crate) use self::demo_spl_token_2022::parse_fixture;
/// UI-safe SQL table diagnostic snapshot.
pub(crate) use self::demo_sql_common::DemoSqlTableSnapshot;
/// Connects to the configured PostgreSQL store.

View File

@@ -1,5 +1,5 @@
// file: kb-app-demo-desktop/src/tauri.rs
// version: 15
// version: 17
//! Tauri runtime assembly and private command wrappers.
@@ -76,8 +76,8 @@ pub fn run() -> kb_core::Result<()> {
demo_execution_spl_validation_scenarios,
demo_execution_spl_token_execute,
demo_spl_token_journal,
demo_execution_spl_token2022_execute,
demo_spl_token2022_fixture,
demo_execution_spl_token_2022_execute,
demo_spl_token_2022_fixture,
demo_spl_ata_derive,
demo_execution_spl_ata_execute,
demo_spl_ata_journal,
@@ -424,6 +424,7 @@ async fn demo_decode_replay_execute(
unmatched = summary.unmatched,
not_started = summary.not_started,
failed_inputs = summary.failed_inputs,
processing_error_inputs = summary.processing_error_inputs,
cancelled = summary.cancelled,
processors = ?summary.processors,
"contextual decode replay command completed"
@@ -1326,13 +1327,13 @@ fn demo_execution_spl_validation_scenarios()
label: scenario.label,
family: match scenario.family {
kb_pipeline_demo_scenarios::DevnetSplValidationFamily::Token2022Public => {
"token2022_public".to_string()
"token_2022_public".to_string()
},
kb_pipeline_demo_scenarios::DevnetSplValidationFamily::ElGamalRegistry => {
"elgamal_registry".to_string()
},
kb_pipeline_demo_scenarios::DevnetSplValidationFamily::Token2022Confidential => {
"token2022_confidential".to_string()
"token_2022_confidential".to_string()
},
},
operation_code: scenario.operation_code,
@@ -1712,7 +1713,7 @@ async fn demo_spl_ata_journal(
/// Executes one public Token-2022 simulation or explicitly authorized Devnet submission.
#[tauri::command]
async fn demo_execution_spl_token2022_execute(
async fn demo_execution_spl_token_2022_execute(
app_handle: tauri::AppHandle,
state: tauri::State<'_, crate::AppState>,
request: crate::DemoExecutionSplToken2022Request,
@@ -1775,7 +1776,7 @@ async fn demo_execution_spl_token2022_execute(
cancel_requested: state.demo_execution_solana_core_cancel_requested(),
};
let workspace_root = crate::workspace_root_dir();
let summary = match kb_pipeline_demo_scenarios::execute_devnet_spl_token2022(
let summary = match kb_pipeline_demo_scenarios::execute_devnet_spl_token_2022(
&http_pool,
&store,
&profile,
@@ -1790,7 +1791,7 @@ async fn demo_execution_spl_token2022_execute(
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => return std::result::Result::Err(error.to_string()),
};
return std::result::Result::Ok(crate::demo_spl_token2022_summary_payload(
return std::result::Result::Ok(crate::demo_spl_token_2022_summary_payload(
request.scenario_id,
operation_code,
summary,
@@ -1799,7 +1800,7 @@ async fn demo_execution_spl_token2022_execute(
/// Loads public Token-2022 fixture values without reading private key bytes.
#[tauri::command]
fn demo_spl_token2022_fixture(
fn demo_spl_token_2022_fixture(
state: tauri::State<'_, crate::AppState>,
profile_name: std::string::String,
) -> std::result::Result<crate::DemoSplToken2022FixturePayload, std::string::String> {
@@ -1813,7 +1814,7 @@ fn demo_spl_token2022_fixture(
} else {
crate::workspace_root_dir().join(configured)
};
let fixture_path = wallet_dir.join("spl_token2022_validation").join("fixture.env");
let fixture_path = wallet_dir.join("spl_token_2022_validation").join("fixture.env");
let contents = match std::fs::read_to_string(&fixture_path) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => {