Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
72b60d7
feat(inspector): add operator inspection API
italic-jinxin Aug 5, 2026
aa7c5c9
docs(inspector): assign product service ownership
italic-jinxin Aug 6, 2026
7b09ada
test(inspector): ratchet diagnostic contracts
italic-jinxin Aug 6, 2026
e063a2f
feat(inspector): add debug panel shell
italic-jinxin Aug 5, 2026
a76b817
test(inspector): cover debug panel shell e2e
italic-jinxin Aug 5, 2026
ddaeba0
fix(inspector): stop diagnostics when panel closes
italic-jinxin Aug 6, 2026
46ed1b8
feat(inspector): add prompt inspection
italic-jinxin Aug 5, 2026
e11b069
fix(inspector): follow current webui ownership
italic-jinxin Aug 6, 2026
3d8040c
feat(inspector): add model call statistics
italic-jinxin Aug 5, 2026
469ba30
test(inspector): cover model statistics e2e
italic-jinxin Aug 5, 2026
bacdc68
fix(inspector): avoid uncollected tool metrics
italic-jinxin Aug 6, 2026
f306cf7
test(inspector): cover prompt diagnostics e2e
italic-jinxin Aug 5, 2026
1213fba
test(inspector): align statistics e2e scope
italic-jinxin Aug 6, 2026
bac5387
fix(inspector): redact prompt metadata
italic-jinxin Aug 6, 2026
ee0ea15
fix(inspector): preserve per-call model identity
italic-jinxin Aug 6, 2026
279f78c
fix(inspector): classify prompt instruction sources
italic-jinxin Aug 6, 2026
ed6ff33
test(inspector): assert reported token usage
italic-jinxin Aug 6, 2026
fc6a9f6
Merge remote-tracking branch 'origin/main' into issue-7220-operator-i…
italic-jinxin Aug 6, 2026
33bc0c5
fix(inspector): address review feedback
italic-jinxin Aug 6, 2026
4d5ec3f
fix(inspector): retry transient snapshot failures
italic-jinxin Aug 6, 2026
88ceb27
Merge branch 'issue-7220-operator-inspection-api' into issue-7221-ins…
italic-jinxin Aug 6, 2026
6cb06b6
fix(inspector): address prompt diagnostic review findings
italic-jinxin Aug 6, 2026
1e2fe20
Merge issue-7221 inspector shell into prompt inspection
italic-jinxin Aug 6, 2026
f183748
fix(inspector): follow debug query navigation
italic-jinxin Aug 6, 2026
ce1b51a
Merge issue-7222 prompt inspection into model call stats
italic-jinxin Aug 6, 2026
596b78b
Merge branch 'main' into issue-7221-inspector-panel-shell
italic-jinxin Aug 7, 2026
f2d4cbe
fix(inspector): preserve stream terminal state
italic-jinxin Aug 7, 2026
0e4106f
Merge remote-tracking branch 'origin/issue-7221-inspector-panel-shell…
italic-jinxin Aug 7, 2026
06378a4
fix(inspector): capture full capability surface
italic-jinxin Aug 7, 2026
d013c7d
Merge remote-tracking branch 'origin/issue-7222-prompt-inspection' in…
italic-jinxin Aug 7, 2026
376b02a
Merge origin/main into issue-7222-prompt-inspection
italic-jinxin Aug 7, 2026
744a723
Merge branch 'main' into issue-7222-prompt-inspection
italic-jinxin Aug 7, 2026
d70ff59
fix(inspector): address prompt diagnostic review feedback
italic-jinxin Aug 7, 2026
14352aa
Merge origin/issue-7222-prompt-inspection into issue-7223-model-call-…
italic-jinxin Aug 7, 2026
a0e8cf9
Merge origin/main into issue-7223-model-call-stats
italic-jinxin Aug 7, 2026
5912f4b
fix inspector model call stats review findings
italic-jinxin Aug 7, 2026
88ccedc
fix inspector refresh and truncation regressions
italic-jinxin Aug 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ mod tests {
surface_version: None,
model_preference: None,
fallback_index: 0,
iteration: 0,
capability_view: None,
};
let _ = governor
Expand Down
3 changes: 3 additions & 0 deletions crates/contracts/ironclaw_loop_contracts/src/host/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ pub struct LoopModelRequest {
/// Zero-based index into the host-resolved ordered fallback chain.
#[serde(default)]
pub fallback_index: u32,
/// Zero-based agent-loop iteration that issued this provider call.
#[serde(default)]
pub iteration: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capability_view: Option<LoopModelCapabilityView>,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ async fn host_managed_model_port_routes_gateway_and_emits_model_milestones() {
surface_version: Some(CapabilitySurfaceVersion::new("surface-v1").unwrap()),
model_preference: Some(context.resolved_run_profile.model_profile_id.clone()),
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -345,6 +346,7 @@ async fn host_managed_model_port_returns_response_when_model_started_milestone_f
surface_version: None,
model_preference: None,
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -390,6 +392,7 @@ async fn host_managed_model_port_returns_response_when_model_completed_milestone
surface_version: None,
model_preference: None,
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -432,6 +435,7 @@ async fn host_managed_model_port_sanitizes_gateway_errors() {
surface_version: None,
model_preference: None,
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -2913,6 +2917,7 @@ impl AgentLoopDriver for ReplyDriver {
.clone(),
),
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -3205,6 +3210,7 @@ async fn host_managed_model_port_times_out_a_hung_gateway() {
surface_version: Some(CapabilitySurfaceVersion::new("surface-v1").unwrap()),
model_preference: Some(context.resolved_run_profile.model_profile_id.clone()),
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -3243,6 +3249,7 @@ async fn host_managed_model_port_allows_long_calls_that_keep_streaming_progress(
surface_version: Some(CapabilitySurfaceVersion::new("surface-v1").unwrap()),
model_preference: Some(context.resolved_run_profile.model_profile_id.clone()),
fallback_index: 0,
iteration: 0,
capability_view: None,
})
.await
Expand Down Expand Up @@ -3860,6 +3867,7 @@ fn simple_model_request(context: &LoopRunContext) -> LoopModelRequest {
surface_version: None,
model_preference: Some(context.resolved_run_profile.model_profile_id.clone()),
fallback_index: 0,
iteration: 0,
capability_view: None,
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ pub(super) async fn explain_failure(
surface_version: None,
model_preference: None,
fallback_index: state.model_state.fallback_index,
iteration: state.iteration,
capability_view: Some(LoopModelCapabilityView {
visible_capability_ids: Vec::new(),
}),
Expand Down
1 change: 1 addition & 0 deletions crates/loop/ironclaw_agent_loop/src/executor/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ impl ExecutorStage<ModelInput> for ModelStage {
surface_version: Some(surface_version.clone()),
model_preference,
fallback_index,
iteration: state.iteration,
capability_view: Some(capability_view.clone()),
};
let visible_capability_count = capability_view.visible_capability_ids.len();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,14 +488,16 @@ async fn model_cancelled_returns_cancelled_without_retry() {
"model cancelled",
)]);
let executor = CanonicalAgentLoopExecutor;
let state = LoopExecutionState::initial_for_run(host.run_context());
let mut state = LoopExecutionState::initial_for_run(host.run_context());
state.iteration = 3;

let result = executor
.execute_family(&crate::families::default(), &host, state)
.await;

assert!(matches!(result, Err(AgentLoopExecutorError::Cancelled)));
assert_eq!(host.model_requests().len(), 1);
assert_eq!(host.model_requests()[0].iteration, 3);
}

#[tokio::test]
Expand Down
1 change: 1 addition & 0 deletions crates/loop/ironclaw_hooks/src/middleware/model_port.rs
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ mod tests {
surface_version: None,
model_preference: None,
fallback_index: 0,
iteration: 0,
capability_view: None,
}
}
Expand Down
1 change: 1 addition & 0 deletions crates/loop/ironclaw_loop_host/src/budget_accountant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -899,6 +899,7 @@ mod tests {
surface_version: None,
model_preference: None,
fallback_index: 0,
iteration: 0,
capability_view: None,
}
}
Expand Down
Loading
Loading