Until now missions wrote no memory. The chat path records every turn into the claw's .brain, but a mission's crew is minted per mission, so a brain keyed by agent would be written once and never read. What persists across missions is the repository: mission_memory keeps one .brain per repo_id, writes each judge verdict into it (reason when met, sanitized guidance when not — the operator reason may quote the acceptance text), and recalls against the next phase's task text into the brief, under a heading all three executors carry because it rides on the task. Recall is BM25 over the keyword index, no embedder; the harness asserts the brief carries the section once the repo has one judged mission behind it, and says 'first mission' rather than failing before that. OpenClaw's flush-before-compaction was the other half of this item and is moot here: the chat loop has no compaction and already remembers both halves of every turn. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WZb5A2kfVfjpdwSochkuHz
23 lines
770 B
Rust
23 lines
770 B
Rust
//! The agent run loop: takes a user message, drives the LLM provider,
|
|
//! executes tools, and journals every event before any observer sees it
|
|
//! (the gateway streams exactly this journal, live or replayed).
|
|
|
|
pub mod brain;
|
|
mod events;
|
|
pub mod outbox;
|
|
mod runtime;
|
|
mod sandboxes;
|
|
pub mod scheduling;
|
|
mod terminals;
|
|
mod tools;
|
|
|
|
pub use events::{RunEventBody, RunEventEnvelope};
|
|
pub use outbox::{drain_once, spawn_drainer, EmailSender, LettreSender, SmtpConfig};
|
|
pub use runtime::{
|
|
governor_allows, judge_model, ProviderRegistry, Runtime, RuntimeConfig, RuntimeError,
|
|
StartedRun,
|
|
};
|
|
pub use sandboxes::{NodeDriverProvider, SandboxManager};
|
|
pub use terminals::{DriveConfig, TerminalManager};
|
|
pub use tools::{ClockNow, EmailSend, Tool, ToolContext, ToolRegistry};
|