agentscope-ai / agentscope-ai/agentscope-java

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

Aperta
#2,159 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
area/harness bug
Lingua principale
Java
Stelle
5.6k
Fork
1.3k
Merge medio
4g 12h
PR unite (30g)
77

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.