agentscope-ai / agentscope-ai/agentscope-java

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

Ouverte
#2,159 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
area/harness bug
Langage dominant
Java
Étoiles
5.6k
Forks
1.3k
Merge moyen
4 j 12 h
PR mergées (30 j)
77

Description

## 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)".

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.