harness-tools + app: subagent context-file reporting to the job board (M4)
A ContextReporter wired into subagent sessions lets the read tool advertise the files it reads (≥10 lines) on its job board entry, so a completed specialist shows what it already looked at. Root sessions report nothing (no parent board). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,8 @@ use crate::llm::{FinishReason, LlmEvent, LlmEventStream, ProviderError};
|
||||
use crate::permission::{PermissionService, Ruleset};
|
||||
use crate::store::Store;
|
||||
use crate::tool::{
|
||||
MetadataSink, PermissionHandle, SubagentSpawner, Tool, ToolCtx, ToolError, ToolRegistry,
|
||||
ContextReporter, MetadataSink, PermissionHandle, SubagentSpawner, Tool, ToolCtx, ToolError,
|
||||
ToolRegistry,
|
||||
};
|
||||
use crate::types::{Message, MessageId, Part, PartBody, PartId, SessionId, TokenUsage, ToolState};
|
||||
|
||||
@@ -65,6 +66,9 @@ pub struct StepContext {
|
||||
/// This session's background job board (as a parent). Injected into requests when the
|
||||
/// running agent can delegate; `None` disables the board.
|
||||
pub job_board: Option<Arc<JobBoard>>,
|
||||
/// Present in subagent sessions: reports read files to this session's job on the parent
|
||||
/// board. `None` for root sessions (nothing to report to).
|
||||
pub context_reporter: Option<Arc<dyn ContextReporter>>,
|
||||
}
|
||||
|
||||
struct FlushTracker {
|
||||
@@ -506,6 +510,7 @@ impl<'a> Run<'a> {
|
||||
ask,
|
||||
metadata: metadata_sink,
|
||||
spawner: self.ctx.spawner.clone(),
|
||||
context_reporter: self.ctx.context_reporter.clone(),
|
||||
};
|
||||
|
||||
let result = tokio::select! {
|
||||
|
||||
Reference in New Issue
Block a user