agent-loop: projection, recovery, compaction into the crate (phase 3)
Nightly Build / build (push) Successful in 6m49s
Nightly Build / build (push) Successful in 6m49s
The session handler is now a thin shell: three entry points in kernel_turn.rs (run_kernel_turn / recover_turn / resolve_pending_call) and the ChatSessionHandler. Everything that shaped a Value — projection, recovery, compaction mechanics, the LLM loop, message building — lives in agent-loop or behind a loop_adapters trait. agent-loop: - projection/ (mod + media): stored history -> wire messages, the one place provider divergence lives; well-formedness contract, DTL injections (append-only), media parts. LinearAssembler is now a Projection + ProjectionHooks config, not its own implementation - recovery.rs: reap interrupted batches -> resolve the deepest frame's non-terminal calls (Running by policy + RestartHint, AwaitingHuman re-asked) -> un-wedge finished children -> cascade up, every frame on its own agent (B3) - compaction.rs: split point (never assistant+tool group), transcript, SUMMARY_PREFIX/preamble/template, the no-tools model call, summary row - manager: resolve_pending (gate skipped, real ToolContext, then continue incl. sub-agent); start_loop used by recovery; LiveInput - delegate: AsyncExecutor + StoreSink for mode:async (durable cron row, result delivered back into the parent conversation) - kernel/context/store: support the above (TurnScope via Extensions, frame lookups, aligned result-text semantics) skald-core: - loop_adapters: UserLoopRuntime (D12 - one LoopManager per user), TurnScope (per-turn state in the Extensions type-map; no scope is denied), projection_cfg/media_source/tool_digest (Skald's projection knobs without owning projection code), async_task (CronExecutor + DurableSink) - session/handler: stripped to mod.rs + kernel_turn.rs + config.rs + interface_tools.rs + media.rs; deleted agent_dispatch, approval, dispatch, emitter, gate, llm_call, llm_loop, message_builder, messages, outcome, resume - compactor.rs: policy only (threshold, model pick, CompactionEvent); mechanics are the crate's CLAUDE.md updated (recovery, compaction, sub-agents, approval gate, projection sections now describe the crate-owned flow).
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
//! Skald-side adapters implementing the `agent-loop` trait surface over the
|
||||
//! existing infrastructure (blueprint §14 phase 1). **Unused by the current
|
||||
//! loop** — they compile and are unit-tested here, and get wired in phase 2.
|
||||
//! Skald-side adapters implementing the `agent-loop` trait surface: everything
|
||||
//! the library asks a host for, answered the way Skald does it. The loop itself
|
||||
//! — rounds, projection, delegation, recovery, compaction — is the crate's.
|
||||
//!
|
||||
//! - [`history::SqliteHistory`] — `HistoryStore` over the existing
|
||||
//! `chat_sessions_stack` / `chat_history` / `chat_llm_tools` / `chat_summaries`
|
||||
@@ -14,17 +14,35 @@
|
||||
//! `AgentRunConfig::all_tool_defs`), plus the core-api→agent-loop tool bridge.
|
||||
//! - [`activation`] — `ActivationSource` + `ToolActivator` over the
|
||||
//! `activated_tools` table and the MCP provider (D15).
|
||||
//! - [`projection_cfg`] — the wire knobs Skald's models need, handed to the
|
||||
//! library's projection engine, plus the assembler every turn runs on.
|
||||
//! Skald owns no projection code: [`media_source`] authorizes which files may
|
||||
//! be inlined (§6 containment) and [`tool_digest`] condenses an over-long
|
||||
//! tool result — the library does the shaping.
|
||||
//! - [`async_task`] — `execute_task mode=async` as a durable cron job, and the
|
||||
//! delivery of its result back into the parent conversation (§7.2).
|
||||
//! - [`runtime::UserLoopRuntime`] — the one `LoopManager` per user (D12) these
|
||||
//! are all assembled into, plus the per-turn parameters.
|
||||
|
||||
pub mod activation;
|
||||
pub mod assembler;
|
||||
pub mod async_task;
|
||||
pub mod builtins;
|
||||
pub mod catalog;
|
||||
pub mod gate;
|
||||
pub mod history;
|
||||
pub mod hooks;
|
||||
pub mod live_input;
|
||||
pub mod media_source;
|
||||
pub mod preview;
|
||||
#[cfg(test)]
|
||||
mod projection_snapshots;
|
||||
pub mod scope;
|
||||
pub mod projection_cfg;
|
||||
pub mod runtime;
|
||||
pub mod selector;
|
||||
pub mod system;
|
||||
#[cfg(test)]
|
||||
mod testkit;
|
||||
pub mod tool_digest;
|
||||
pub mod toolset;
|
||||
pub mod translate;
|
||||
|
||||
Reference in New Issue
Block a user