Skip to content

Commit f3a69d1

Browse files
committed
merge: v0.5.3 CORE-FOLD — orchestrator-providers + orchestrator-store into orchestrator-core
- crates/orchestrator-providers/ → crates/orchestrator-core/src/subject_adapter/ (4 files, ~2006 LOC) - crates/orchestrator-store/ → crates/orchestrator-core/src/store/ (1 file, 180 LOC) - 2 callers updated for providers (orchestrator-core itself + animus-runtime-shared) - 2 callers updated for store (same) - tempfile dep promoted from dev-only to prod in orchestrator-core (the store helpers use it in prod paths) Workspace: 15 → 13 crates. Pure mechanical moves, no semantic change. Note: subject_adapter::TaskServiceApi and services::TaskServiceApi now coexist in orchestrator-core (same for PlanningServiceApi). Disambiguation via 'as Provider...' aliases preserved; future cleanup could unify the names. Branch: worktree-agent-a7dec38ca30288157 (commit 9ecedd5).
2 parents 5d07ea8 + 9ecedd5 commit f3a69d1

37 files changed

Lines changed: 58 additions & 233 deletions

AGENTS.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,12 @@ crates/
4141
├── animus-plugin-runtime/ # Runtime helpers for plugin implementations
4242
├── orchestrator-cli/ # Main `animus` binary
4343
├── orchestrator-config/ # Workflow, pack, and template config loading
44-
├── orchestrator-core/ # Domain services, bootstrap, state mutation APIs
44+
├── orchestrator-core/ # Domain services, subject_adapter, store, bootstrap, state mutation APIs
4545
├── orchestrator-daemon-runtime/ # Daemon queue and scheduling runtime
4646
├── orchestrator-logging/ # Shared tracing and log file utilities
4747
├── orchestrator-notifications/ # Notification/runtime integration support
4848
├── orchestrator-plugin-host/ # Plugin discovery, install, and stdio host
49-
├── orchestrator-providers/ # Built-in provider integrations and routing
5049
├── orchestrator-session-host/ # Session backend layer + provider/plugin execution bridge
51-
├── orchestrator-store/ # Shared state/storage path helpers
5250
└── protocol/ # Shared protocol/config/runtime types
5351
```
5452

CLAUDE.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Animus is a Rust-only agent orchestrator with:
3838

3939
Do not reintroduce stale claims such as:
4040

41-
- stale workspace-count summaries that do not match `Cargo.toml`'s current 15 members
41+
- stale workspace-count summaries that do not match `Cargo.toml`'s current 13 members
4242
- "plugin extraction in flux" or "in progress" framing — extraction is complete as of v0.4.12
4343
- `PROJECT_ROOT` or "last-project-root registry" resolution rules
4444
- removed crates like `llm-mcp-server`, `llm-cli-wrapper`, `orchestrator-web-api`, `orchestrator-web-contracts`, or in-tree `animus-provider-{claude,codex,gemini,opencode,oai}`. `orchestrator-web-server` still exists in-repo but is not a current workspace member
@@ -51,16 +51,14 @@ Do not reintroduce stale claims such as:
5151
Core orchestration:
5252

5353
- `crates/orchestrator-cli`
54-
- `crates/orchestrator-core`
54+
- `crates/orchestrator-core` (includes the folded-in `subject_adapter` and `store` modules as of v0.5.3)
5555
- `crates/orchestrator-config`
56-
- `crates/orchestrator-store`
5756
- `crates/protocol`
5857

5958
Runtime and provider layer:
6059

6160
- `crates/agent-runner`
6261
- `crates/orchestrator-daemon-runtime`
63-
- `crates/orchestrator-providers`
6462
- `crates/orchestrator-notifications`
6563
- `crates/orchestrator-session-host`
6664
- `crates/orchestrator-logging`

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ cargo animus-lint
5454

5555
The workspace is organized into functional crates:
5656

57-
- **Core orchestration**: `orchestrator-cli`, `orchestrator-core`, `orchestrator-config`, `orchestrator-store`
57+
- **Core orchestration**: `orchestrator-cli`, `orchestrator-core` (includes the v0.5.3 folded-in `subject_adapter` and `store` modules), `orchestrator-config`
5858
- **Runtime & agents**: `agent-runner`, `animus-runtime-shared`, `orchestrator-daemon-runtime`, `orchestrator-session-host`
5959
- **Plugin host**: `orchestrator-plugin-host`, `animus-plugin-protocol`, `animus-plugin-runtime`
60-
- **Utilities**: `orchestrator-providers`, `orchestrator-notifications`, `protocol`
60+
- **Utilities**: `orchestrator-notifications`, `protocol`
6161
- **Web stack**: shipped as external plugins (`launchapp-dev/animus-transport-http`, `animus-transport-graphql`, `animus-web-ui`). Install with `animus plugin install-defaults --include-transports`.
6262

6363
### Running Tests

Cargo.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ members = [
1010
"crates/orchestrator-plugin-host",
1111
"crates/orchestrator-config",
1212
"crates/orchestrator-core",
13-
"crates/orchestrator-store",
1413
"crates/orchestrator-cli",
1514
"crates/animus-runtime-shared",
16-
"crates/orchestrator-providers",
1715
"crates/orchestrator-session-host",
1816
]
1917
default-members = [
@@ -42,9 +40,7 @@ orchestrator-logging = { path = "crates/orchestrator-logging" }
4240
orchestrator-plugin-host = { path = "crates/orchestrator-plugin-host" }
4341
orchestrator-config = { path = "crates/orchestrator-config" }
4442
orchestrator-core = { path = "crates/orchestrator-core" }
45-
orchestrator-providers = { path = "crates/orchestrator-providers" }
4643
orchestrator-session-host = { path = "crates/orchestrator-session-host" }
47-
orchestrator-store = { path = "crates/orchestrator-store" }
4844
# v0.5.1 round-5 fold-in: the in-tree `workflow-runner-v2` lib was deleted
4945
# in favour of `animus-runtime-shared`. The crate is also published as
5046
# `launchapp-dev/animus-runtime-shared` v0.1.0 for the plugin to consume;

crates/animus-runtime-shared/Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ uuid = { version = "1", features = ["v4", "serde"] }
3131
interprocess = "2.4"
3232

3333
# When vendored inside the ao-cli workspace this crate uses the in-tree
34-
# `protocol` / `orchestrator-core` / `orchestrator-config` /
35-
# `orchestrator-store` workspace members. The out-of-tree
36-
# `launchapp-dev/animus-runtime-shared` repo replaces these with `git` deps
37-
# pinned to a `launchapp-dev/animus-cli` rev — keep both in sync when
38-
# pushing a new shared-crate version.
34+
# `protocol` / `orchestrator-core` / `orchestrator-config` workspace
35+
# members. The out-of-tree `launchapp-dev/animus-runtime-shared` repo
36+
# replaces these with `git` deps pinned to a `launchapp-dev/animus-cli`
37+
# rev — keep both in sync when pushing a new shared-crate version.
38+
# (v0.5.3 surface-shrink: `orchestrator-store` was folded into
39+
# `orchestrator-core::store`; `fsync_rename` is re-exported from there.)
3940
protocol = { workspace = true }
4041
orchestrator-core = { workspace = true }
4142
orchestrator-config = { workspace = true }
42-
orchestrator-store = { workspace = true }
4343

4444
[features]
4545
# Exposes the `phase_session::test_fault` and `phase_output::test_fault`

crates/animus-runtime-shared/src/agent_state.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ where
8080

8181
// Agent memory writes use the same durable pattern as session checkpoints:
8282
// fsync the staged tempfile, atomic rename, then fsync the parent dir so
83-
// the rename survives power loss. See `orchestrator_store::fsync_rename`
83+
// the rename survives power loss. See `orchestrator_core::store::fsync_rename`
8484
// for the macOS F_FULLFSYNC caveat.
8585
fn write_json_atomic<T>(path: &Path, value: &T) -> Result<()>
8686
where
@@ -102,7 +102,7 @@ where
102102
file.write_all(payload.as_bytes()).with_context(|| format!("failed to write {}", tmp_path.display()))?;
103103
file.sync_all().with_context(|| format!("failed to fsync {}", tmp_path.display()))?;
104104
}
105-
orchestrator_store::fsync_rename(&tmp_path, path)
105+
orchestrator_core::store::fsync_rename(&tmp_path, path)
106106
.with_context(|| format!("failed to durably rename {} -> {}", tmp_path.display(), path.display()))?;
107107
Ok(())
108108
}

crates/animus-runtime-shared/src/ensure_execution_cwd.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use anyhow::Result;
2-
use orchestrator_core::{providers::SubjectContext, services::ServiceHub, SubjectRef};
2+
use orchestrator_core::{services::ServiceHub, subject_adapter::SubjectContext, SubjectRef};
33
use std::sync::Arc;
44

55
pub async fn ensure_execution_cwd(

crates/animus-runtime-shared/src/phase_output.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ pub fn write_phase_completion_marker(
5656
// even though the data file is fully on disk. ~5-50ms on SSD —
5757
// negligible vs. the cost of replaying a completed phase or, worse,
5858
// double-running one.
59-
orchestrator_store::fsync_rename(&tmp_path, &final_path)?;
59+
orchestrator_core::store::fsync_rename(&tmp_path, &final_path)?;
6060
Ok(())
6161
}
6262

@@ -241,7 +241,7 @@ pub fn persist_phase_output(
241241
// change is durable across power loss. Without this the recovery
242242
// logic could find a completion marker without the sibling
243243
// <phase>.json (or vice versa) after a kernel panic.
244-
orchestrator_store::fsync_rename(&tmp_path, &file_path)?;
244+
orchestrator_core::store::fsync_rename(&tmp_path, &file_path)?;
245245
if !matches!(outcome, PhaseExecutionOutcome::ManualPending { .. }) {
246246
write_phase_completion_marker(project_root, workflow_id, phase_id, attempt)?;
247247
}

crates/animus-runtime-shared/src/phase_session.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ fn write_atomic(path: &Path, checkpoint: &SessionCheckpoint) -> io::Result<()> {
268268
file.write_all(&payload)?;
269269
file.sync_all()?;
270270
}
271-
orchestrator_store::fsync_rename(&tmp, path)
271+
orchestrator_core::store::fsync_rename(&tmp, path)
272272
}
273273

274274
fn sanitize(value: &str) -> String {

crates/orchestrator-core/Cargo.toml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,14 @@ fs2 = "0.4"
1818
sha2 = "0.10"
1919
rusqlite = { version = "0.31", features = ["bundled", "blob"] }
2020
zstd = "0.13"
21+
tempfile = "3"
2122
protocol = { path = "../protocol" }
2223
animus-plugin-protocol = { workspace = true }
2324
orchestrator-plugin-host = { workspace = true }
24-
orchestrator-providers = { workspace = true }
25-
orchestrator-store = { workspace = true }
2625
orchestrator-config = { workspace = true }
2726
orchestrator-logging = { workspace = true }
2827
which = "8"
2928
toml = "1.0"
3029

31-
[dev-dependencies]
32-
tempfile = "3"
33-
3430
[lints]
3531
workspace = true

0 commit comments

Comments
 (0)