Skip to content

Commit 5b59b34

Browse files
committed
refactor: use impl Effect return types and stillwater helpers
Update Effect-based functions to use impl Trait return syntax and Stillwater's standalone helper functions (asks, local, from_async) instead of Effect:: associated functions. This aligns with idiomatic Rust and the updated Stillwater API. Changes across mapreduce effects, environment helpers, orchestrator, workflow effects, and unified session modules.
1 parent 561e74e commit 5b59b34

File tree

14 files changed

+292
-233
lines changed

14 files changed

+292
-233
lines changed

Cargo.lock

Lines changed: 2 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ hostname = "0.4"
5656
nix = { version = "0.30", features = ["signal", "process"] }
5757
sysinfo = "0.37.1"
5858
dirs = "6.0.0"
59-
stillwater = "0.8.0"
59+
stillwater = "0.11.0"
6060
rayon = "1.11.0"
61-
premortem = { version = "0.3.0", features = ["toml", "yaml", "derive"] }
61+
premortem = { path = "../premortem", features = ["toml", "yaml", "derive"] }
6262

6363
[features]
6464
default = []

src/cook/execution/mapreduce/effects/commands.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::cook::execution::mapreduce::effects::worktree::Worktree;
1111
use crate::cook::execution::mapreduce::environment::MapEnv;
1212
use serde_json::Value;
1313
use std::collections::HashMap;
14-
use stillwater::Effect;
14+
use stillwater::{from_async, Effect};
1515

1616
/// Result from command execution
1717
#[derive(Debug, Clone)]
@@ -44,11 +44,11 @@ pub struct CommandResult {
4444
pub fn execute_commands_effect(
4545
item: &Value,
4646
worktree: &Worktree,
47-
) -> Effect<CommandResult, MapReduceError, MapEnv> {
47+
) -> impl Effect<Output = CommandResult, Error = MapReduceError, Env = MapEnv> {
4848
let item = item.clone();
4949
let worktree = worktree.clone();
5050

51-
Effect::from_async(move |env: &MapEnv| {
51+
from_async(move |env: &MapEnv| {
5252
let item = item.clone();
5353
let worktree = worktree.clone();
5454
let _command_executor = env.command_executor.clone();

src/cook/execution/mapreduce/effects/merge.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use crate::cook::execution::errors::MapReduceError;
1010
use crate::cook::execution::mapreduce::effects::worktree::Worktree;
1111
use crate::cook::execution::mapreduce::environment::MapEnv;
12-
use stillwater::Effect;
12+
use stillwater::{from_async, Effect};
1313

1414
/// Result from merge operation
1515
#[derive(Debug, Clone)]
@@ -39,10 +39,10 @@ pub struct MergeResult {
3939
pub fn merge_to_parent_effect(
4040
worktree: &Worktree,
4141
_parent_branch: &str,
42-
) -> Effect<MergeResult, MapReduceError, MapEnv> {
42+
) -> impl Effect<Output = MergeResult, Error = MapReduceError, Env = MapEnv> {
4343
let _worktree_name = worktree.name.clone();
4444

45-
Effect::from_async(move |env: &MapEnv| {
45+
from_async(move |env: &MapEnv| {
4646
let _worktree_manager = env.worktree_manager.clone();
4747

4848
async move {
@@ -62,8 +62,10 @@ pub fn merge_to_parent_effect(
6262
///
6363
/// Checks whether an agent's worktree has any commits that need to be merged.
6464
/// Used for commit validation and optimization.
65-
pub fn has_commits_effect(_worktree: &Worktree) -> Effect<bool, MapReduceError, MapEnv> {
66-
Effect::from_async(move |env: &MapEnv| {
65+
pub fn has_commits_effect(
66+
_worktree: &Worktree,
67+
) -> impl Effect<Output = bool, Error = MapReduceError, Env = MapEnv> {
68+
from_async(move |env: &MapEnv| {
6769
let _worktree_manager = env.worktree_manager.clone();
6870

6971
async move {
@@ -76,8 +78,10 @@ pub fn has_commits_effect(_worktree: &Worktree) -> Effect<bool, MapReduceError,
7678
/// Effect: Get list of commits in worktree
7779
///
7880
/// Retrieves the list of commits made in an agent's worktree.
79-
pub fn list_commits_effect(_worktree: &Worktree) -> Effect<Vec<String>, MapReduceError, MapEnv> {
80-
Effect::from_async(move |env: &MapEnv| {
81+
pub fn list_commits_effect(
82+
_worktree: &Worktree,
83+
) -> impl Effect<Output = Vec<String>, Error = MapReduceError, Env = MapEnv> {
84+
from_async(move |env: &MapEnv| {
8185
let _worktree_manager = env.worktree_manager.clone();
8286

8387
async move {

src/cook/execution/mapreduce/effects/worktree.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use crate::cook::execution::errors::MapReduceError;
77
use crate::cook::execution::mapreduce::environment::MapEnv;
88
use std::path::PathBuf;
9-
use stillwater::Effect;
9+
use stillwater::{from_async, Effect};
1010

1111
/// Worktree information
1212
#[derive(Debug, Clone)]
@@ -36,10 +36,10 @@ pub struct Worktree {
3636
pub fn create_worktree_effect(
3737
name: &str,
3838
_parent_branch: &str,
39-
) -> Effect<Worktree, MapReduceError, MapEnv> {
39+
) -> impl Effect<Output = Worktree, Error = MapReduceError, Env = MapEnv> {
4040
let name = name.to_string();
4141

42-
Effect::from_async(move |env: &MapEnv| {
42+
from_async(move |env: &MapEnv| {
4343
let name = name.clone();
4444
let _worktree_manager = env.worktree_manager.clone();
4545

@@ -70,8 +70,10 @@ pub fn create_worktree_effect(
7070
/// let effect = remove_worktree_effect(&worktree);
7171
/// effect.run_async(&env).await?;
7272
/// ```
73-
pub fn remove_worktree_effect(_worktree: &Worktree) -> Effect<(), MapReduceError, MapEnv> {
74-
Effect::from_async(move |env: &MapEnv| {
73+
pub fn remove_worktree_effect(
74+
_worktree: &Worktree,
75+
) -> impl Effect<Output = (), Error = MapReduceError, Env = MapEnv> {
76+
from_async(move |env: &MapEnv| {
7577
let _worktree_manager = env.worktree_manager.clone();
7678

7779
async move {

0 commit comments

Comments
 (0)