Files
clawmates/Cargo.toml
T
Omar SobhandClaude Opus 4.8 e93fb24b79
ci / gates (push) Has been cancelled
ci / rust (push) Has been cancelled
ci / sandbox-k8s (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / e2e (push) Has been cancelled
feat(topology): cm-orchestrator topology runtime engine (Phase 2)
A pure async control-flow engine that executes a task across a TopologyGraph
by sequencing safe agent turns. Safety by construction: the engine can only
invoke turns via a generic TurnExecutor — it performs no side effects itself,
so §15 gating (inside each turn) is inherited and switching topology cannot
escalate authority.

- TurnExecutor trait + TurnRequest/TurnOutcome (real impl will wrap
  cm-runtime::Runtime; tests use a scripted Echo executor).
- Pure planners (plan.rs): hierarchical (delegate down / synthesize up),
  pipeline (topo-ordered threading), swarm (parallel attempts + aggregate).
- RunRecord journal (per-step + RunMetrics: tokens, gated actions, approvals
  granted/blocked, turns) — feeds the Phase 4 comparison harness/paper.
- Unsupported kinds return an error (no panic). 5 tests, clippy clean.

Next (Phase 2b): a real TurnExecutor adapter over cm-runtime::send_message.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-15 20:14:12 -07:00

62 lines
1.5 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/cm-domain",
"crates/cm-topology",
"crates/cm-orchestrator",
"crates/cm-config",
"crates/cm-db",
"crates/cm-llm",
"crates/cm-runtime",
"crates/cm-tools",
"crates/cm-safety",
"crates/cm-sandbox",
"crates/cm-secrets",
"crates/cm-files",
"crates/cm-scheduler",
"crates/cm-billing",
"crates/cm-telemetry",
"crates/cm-testkit",
"crates/cm-auth",
"crates/cm-api",
"crates/bins/clawmates-server",
"crates/bins/clawmates-broker",
"tools/bundler",
]
[workspace.package]
edition = "2021"
rust-version = "1.96"
license = "UNLICENSED"
publish = false
[workspace.dependencies]
# Shared dependency versions; crates opt in via { workspace = true }.
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
uuid = { version = "1", features = ["v7", "serde"] }
proptest = "1"
time = { version = "0.3", features = ["serde", "serde-well-known"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread", "fs", "net", "time", "sync", "io-util"] }
sqlx = { version = "0.8", default-features = false, features = [
"runtime-tokio",
"tls-rustls",
"postgres",
"uuid",
"time",
"json",
"migrate",
"macros",
"bigdecimal",
] }
testcontainers-modules = { version = "0.13", features = ["postgres"] }
[workspace.lints.rust]
unsafe_code = "deny"
[workspace.lints.clippy]
todo = "deny"
unimplemented = "deny"
dbg_macro = "deny"