agentscope-ai / agentscope-ai/agentscope-java

[Bug]: Dynamic subagent notifications drop FAILED/CANCELLED payloads

Offen
#2,159 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area/harness bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
1.3k
Ø Merge
4 T. 12 Std.
Gemergte PRs (30 T.)
77

Beschreibung

## Summary

Dynamic/background subagent completion notifications lose authoritative FAILED/CANCELLED terminal information. A failed task is announced to the parent as "has completed" with `(no output)`, while the Harness `TaskRecord` contains the real failed status and error.

## Reproduction

Using AgentScope Java main at `e3a412ed2cc944e401da861c8d5e464b967724e9` / `2.0.1-SNAPSHOT`:

1. Build a `HarnessAgent` with dynamic subagents and the default workspace-backed task repository/message bus.
2. Spawn a background child whose invocation terminates with `IllegalStateException("failure-marker")`.
3. Wait until `TaskRepository.getTask(...)` reports `FAILED` and contains `failure-marker`.
4. Continue the parent so `InboxMiddleware` drains the completion notification.
5. Inspect the injected `HintBlock`.

Actual hint:

```
Background subagent task '...' (agent=...) has completed.

Result:

(no output)
```

The parent never receives the authoritative failed status or error. The same callback shape cannot represent cancellation reason/status either.

## Source evidence

`HarnessAgent.Builder.wireTaskRepositoryMessageBus(...)` installs a `WorkspaceTaskRepository` completion callback whose arguments end at nullable `result`. It formats every terminal callback as "has completed" and uses:

```java
result != null ? result : "(no output)"
```

No task status, error message, or cancellation payload is available to the notification formatter.

## Expected behavior

The Harness-owned completion delivery should carry a typed terminal outcome into parent reasoning:

- task id and subagent identity
- terminal status (COMPLETED / FAILED / CANCELLED)
- result for success
- authoritative error for failure
- cancellation reason when available

The fix should remain in the Harness task/message-bus lifecycle. Consumers should not need to add a second completion callback, task store, or delivery registry.

## Impact

This blocks reliable parent aggregation and user-visible partial-failure reporting for background collaboration: the task readback says FAILED while automatic parent reasoning says only "(no output)".

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.