You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+46-2Lines changed: 46 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -408,7 +408,7 @@ public class DiagnosticTools {
408
408
-**Graceful degradation**: Works without Sampling/Elicitation support (gathers everything, returns raw data)
409
409
-**Step failure resilience**: Individual step failures are recorded in `stepsFailed`, workflow continues
410
410
-**Progress tracking**: Reports progress via `DiagnosticHelper.sendProgress()`
411
-
-**Cancellation**: Checks `DiagnosticHelper.checkCancellation()` between steps
411
+
-**Cancellation**: Supports both poll-based (`checkCancellation()` between steps) and push-based (`registerCancellationCallback()` for async operations)
-**Configurable token limits**: `mcp.sampling.triage-max-tokens` and `mcp.sampling.analysis-max-tokens`
414
414
-**OpenTelemetry tracing**: Gather/triage/analysis methods are annotated with `@WithSpan` for
@@ -420,12 +420,50 @@ public class DiagnosticTools {
420
420
421
421
Shared MCP framework utilities in `common/src/.../service/DiagnosticHelper.java`:
422
422
-`sendProgress(Progress, step, totalSteps, message)` — progress update with descriptive message to MCP client
423
-
-`checkCancellation(Cancellation)` — abort if client cancelled
423
+
-`checkCancellation(Cancellation)` — poll-based cancellation check; throws if client cancelled (use for synchronous code paths)
424
+
-`registerCancellationCallback(Cancellation, AtomicBoolean)` — push-based cancellation callback; immediately sets flag when cancelled (use for async operations like Sampling/Elicitation)
425
+
-`checkAsyncCancellation(AtomicBoolean)` — check flag set by callback and throw if cancelled (use after async operations)
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
10
10
### Added
11
11
12
+
-**Push-based cancellation for diagnostics** — Added `DiagnosticHelper.registerCancellationCallback()` for async diagnostic operations (sampling, elicitation). The callback approach catches cancellation immediately via `Cancellation#onCancelled()` instead of polling with `skipProcessingIfCancelled()`, preventing wasted work during long-running LLM calls. Existing `checkCancellation()` remains for synchronous code paths.
12
13
-**Elasticsearch/OpenSearch log provider** (`mcp.log.provider=streamshub-elasticsearch`) for querying logs from Elasticsearch or OpenSearch
13
14
-**Dev environment manifests and scripts** for deploying Elasticsearch with Fluent Bit on Kind clusters and ECK Operator on OpenShift with automated API key provisioning, ClusterLogForwarder integration, and passthrough TLS routes
14
15
-**System tests** for Elasticsearch log provider covering log collection, field mapping, time window queries, and error handling
0 commit comments