pub trait EngineApi: Send + Sync {
Show 36 methods
// Required methods
fn run<'life0, 'async_trait>(
&'life0 self,
code: Option<String>,
code_file: Option<String>,
ctx: Option<Value>,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn advice<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy: &'life1 str,
task: Option<String>,
opts: Option<Value>,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn continue_single<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
response: String,
query_id: Option<&'life2 str>,
usage: Option<TokenUsage>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn continue_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
responses: Vec<QueryResponse>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn eval<'life0, 'life1, 'async_trait>(
&'life0 self,
scenario: Option<String>,
scenario_file: Option<String>,
scenario_name: Option<String>,
strategy: &'life1 str,
strategy_opts: Option<Value>,
auto_card: bool,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn eval_history<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy: Option<&'life1 str>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn eval_detail<'life0, 'life1, 'async_trait>(
&'life0 self,
eval_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn eval_compare<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
eval_id_a: &'life1 str,
eval_id_b: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn scenario_list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn scenario_show<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn scenario_install<'life0, 'async_trait>(
&'life0 self,
url: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn pkg_link<'life0, 'async_trait>(
&'life0 self,
path: String,
name: Option<String>,
force: Option<bool>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn pkg_list<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn pkg_install<'life0, 'async_trait>(
&'life0 self,
url: String,
name: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn pkg_unlink<'life0, 'async_trait>(
&'life0 self,
name: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn pkg_remove<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
project_root: Option<String>,
version: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn add_note<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
content: &'life2 str,
title: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait;
fn log_view<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
limit: Option<usize>,
max_chars: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn stats<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy_filter: Option<&'life1 str>,
days: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn init<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn update<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn migrate<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn card_list<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn card_get<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn card_find<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
scenario: Option<String>,
model: Option<String>,
sort: Option<String>,
limit: Option<usize>,
min_pass_rate: Option<f64>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn card_alias_list<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn card_get_by_alias<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn card_alias_set<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
card_id: &'life2 str,
pkg: Option<String>,
note: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn card_append<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
fields: Value,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn card_install<'life0, 'async_trait>(
&'life0 self,
url: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn card_samples<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
offset: Option<usize>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn hub_reindex<'life0, 'async_trait>(
&'life0 self,
output_path: Option<String>,
source_dir: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn hub_info<'life0, 'async_trait>(
&'life0 self,
pkg: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn hub_search<'life0, 'async_trait>(
&'life0 self,
query: Option<String>,
category: Option<String>,
installed_only: Option<bool>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn info<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = String> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}Expand description
Transport-independent API for the algocline engine.
Abstracts the full public surface of AppService so that callers
(MCP handler, future daemon client, etc.) can operate through
Arc<dyn EngineApi> without depending on the concrete implementation.
All methods are async to support both local (in-process) and remote (socket/HTTP) implementations uniformly.
Required Methods§
Sourcefn run<'life0, 'async_trait>(
&'life0 self,
code: Option<String>,
code_file: Option<String>,
ctx: Option<Value>,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn run<'life0, 'async_trait>(
&'life0 self,
code: Option<String>,
code_file: Option<String>,
ctx: Option<Value>,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Execute Lua code with optional JSON context.
Sourcefn advice<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy: &'life1 str,
task: Option<String>,
opts: Option<Value>,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn advice<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy: &'life1 str,
task: Option<String>,
opts: Option<Value>,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Apply an installed strategy package. Task is optional.
Sourcefn continue_single<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
response: String,
query_id: Option<&'life2 str>,
usage: Option<TokenUsage>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn continue_single<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
response: String,
query_id: Option<&'life2 str>,
usage: Option<TokenUsage>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Continue a paused execution — single response (with optional query_id).
Sourcefn continue_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
responses: Vec<QueryResponse>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn continue_batch<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
responses: Vec<QueryResponse>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Continue a paused execution — batch feed.
Sourcefn status<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Query active session status.
Sourcefn eval<'life0, 'life1, 'async_trait>(
&'life0 self,
scenario: Option<String>,
scenario_file: Option<String>,
scenario_name: Option<String>,
strategy: &'life1 str,
strategy_opts: Option<Value>,
auto_card: bool,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn eval<'life0, 'life1, 'async_trait>(
&'life0 self,
scenario: Option<String>,
scenario_file: Option<String>,
scenario_name: Option<String>,
strategy: &'life1 str,
strategy_opts: Option<Value>,
auto_card: bool,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Run an evalframe evaluation suite.
auto_card: when true, emit an immutable Card
(~/.algocline/cards/{strategy}/{card_id}.toml) summarizing the run.
Sourcefn eval_history<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy: Option<&'life1 str>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn eval_history<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy: Option<&'life1 str>,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List eval history, optionally filtered by strategy.
Sourcefn eval_detail<'life0, 'life1, 'async_trait>(
&'life0 self,
eval_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn eval_detail<'life0, 'life1, 'async_trait>(
&'life0 self,
eval_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
View a specific eval result by ID.
Sourcefn eval_compare<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
eval_id_a: &'life1 str,
eval_id_b: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn eval_compare<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
eval_id_a: &'life1 str,
eval_id_b: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Compare two eval results with statistical significance testing.
Sourcefn scenario_list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn scenario_list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List available scenarios.
Sourcefn scenario_show<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scenario_show<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Show the content of a named scenario.
Sourcefn scenario_install<'life0, 'async_trait>(
&'life0 self,
url: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn scenario_install<'life0, 'async_trait>(
&'life0 self,
url: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Install scenarios from a Git URL or local path.
Sourcefn pkg_link<'life0, 'async_trait>(
&'life0 self,
path: String,
name: Option<String>,
force: Option<bool>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pkg_link<'life0, 'async_trait>(
&'life0 self,
path: String,
name: Option<String>,
force: Option<bool>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Link a local directory as a project-local package (symlink to cache).
Phase 2 (subtask 5) will implement the full symlink logic.
Sourcefn pkg_list<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pkg_list<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List installed packages with metadata.
When project_root is provided, project-local packages from alc.toml/alc.lock
are included with scope: "project". Global packages carry scope: "global".
Sourcefn pkg_install<'life0, 'async_trait>(
&'life0 self,
url: String,
name: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pkg_install<'life0, 'async_trait>(
&'life0 self,
url: String,
name: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Install a package from a Git URL or local path.
Sourcefn pkg_unlink<'life0, 'async_trait>(
&'life0 self,
name: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pkg_unlink<'life0, 'async_trait>(
&'life0 self,
name: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Remove a symlinked package from ~/.algocline/packages/.
Only removes symlinks; for installed (copied) packages, use pkg_remove.
Sourcefn pkg_remove<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
project_root: Option<String>,
version: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn pkg_remove<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
project_root: Option<String>,
version: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove a package declaration from alc.toml and alc.lock.
Requires an alc.toml to be found (via project_root or ancestor walk).
Does NOT delete physical files from ~/.algocline/packages/.
Sourcefn add_note<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
content: &'life2 str,
title: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn add_note<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
content: &'life2 str,
title: Option<&'life3 str>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Append a note to a session’s log file.
Sourcefn log_view<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
limit: Option<usize>,
max_chars: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn log_view<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
limit: Option<usize>,
max_chars: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
View session logs.
Sourcefn stats<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy_filter: Option<&'life1 str>,
days: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn stats<'life0, 'life1, 'async_trait>(
&'life0 self,
strategy_filter: Option<&'life1 str>,
days: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Aggregate stats across all logged sessions.
Sourcefn init<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn init<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Initialize alc.toml in the given project root.
Creates a minimal alc.toml ([packages] section only).
Fails if alc.toml already exists (no overwrite).
Sourcefn update<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Re-resolve all alc.toml entries and rewrite alc.lock.
Requires an alc.toml to be present. Returns resolved count and errors.
Sourcefn migrate<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn migrate<'life0, 'async_trait>(
&'life0 self,
project_root: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Migrate a legacy alc.lock to alc.toml + new alc.lock format.
Detects legacy format via linked_at / local_dir fields.
Backs up the old lock file as alc.lock.bak.
Sourcefn card_list<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn card_list<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List Card summaries, optionally filtered by pkg.
Sourcefn card_get<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn card_get<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch a full Card by id.
Sourcefn card_find<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
scenario: Option<String>,
model: Option<String>,
sort: Option<String>,
limit: Option<usize>,
min_pass_rate: Option<f64>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn card_find<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
scenario: Option<String>,
model: Option<String>,
sort: Option<String>,
limit: Option<usize>,
min_pass_rate: Option<f64>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Filter/sort Cards with optional pkg / scenario / model / sort / limit / min_pass_rate.
Sourcefn card_alias_list<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn card_alias_list<'life0, 'async_trait>(
&'life0 self,
pkg: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List aliases, optionally filtered by pkg.
Sourcefn card_get_by_alias<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn card_get_by_alias<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Resolve an alias name to its bound Card and return the full Card JSON.
Sourcefn card_alias_set<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
card_id: &'life2 str,
pkg: Option<String>,
note: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn card_alias_set<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
card_id: &'life2 str,
pkg: Option<String>,
note: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Bind (or rebind) an alias to a Card.
Sourcefn card_append<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
fields: Value,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn card_append<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
fields: Value,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Append new top-level fields to an existing Card (additive-only).
Sourcefn card_install<'life0, 'async_trait>(
&'life0 self,
url: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn card_install<'life0, 'async_trait>(
&'life0 self,
url: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Install Cards from a Card Collection repo (Git URL or local path).
Sourcefn card_samples<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
offset: Option<usize>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn card_samples<'life0, 'life1, 'async_trait>(
&'life0 self,
card_id: &'life1 str,
offset: Option<usize>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Read per-case samples from a Card’s sidecar JSONL file.
Sourcefn hub_reindex<'life0, 'async_trait>(
&'life0 self,
output_path: Option<String>,
source_dir: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn hub_reindex<'life0, 'async_trait>(
&'life0 self,
output_path: Option<String>,
source_dir: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Rebuild hub index from a packages directory.
When source_dir is provided, scans that directory directly
(pure metadata, no manifest). When omitted, scans ~/.algocline/packages/.
Sourcefn hub_info<'life0, 'async_trait>(
&'life0 self,
pkg: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn hub_info<'life0, 'async_trait>(
&'life0 self,
pkg: String,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Show detailed information for a single package.
Sourcefn hub_search<'life0, 'async_trait>(
&'life0 self,
query: Option<String>,
category: Option<String>,
installed_only: Option<bool>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn hub_search<'life0, 'async_trait>(
&'life0 self,
query: Option<String>,
category: Option<String>,
installed_only: Option<bool>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<String, String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Search packages across remote index + local install state.