|
@@ -16,6 +16,8 @@ import type {
|
|
|
} from '../../utils';
|
|
} from '../../utils';
|
|
|
import {
|
|
import {
|
|
|
isInternalInitiatorPart,
|
|
isInternalInitiatorPart,
|
|
|
|
|
+ parseTaskIdFromTaskOutput,
|
|
|
|
|
+ parseTaskStateFromOutput,
|
|
|
parseTaskStatusOutput,
|
|
parseTaskStatusOutput,
|
|
|
renderRunningTaskPlaceholder,
|
|
renderRunningTaskPlaceholder,
|
|
|
} from '../../utils';
|
|
} from '../../utils';
|
|
@@ -261,9 +263,14 @@ export function updateFromInjectedCompletion(
|
|
|
|
|
|
|
|
const status = parseTaskStatusOutput(part.text);
|
|
const status = parseTaskStatusOutput(part.text);
|
|
|
if (!status) {
|
|
if (!status) {
|
|
|
- log('[task-session-manager] synthetic part missing task status', {
|
|
|
|
|
- textPreview: part.text.slice(0, 120),
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ // Only flag text shaped like task-status output that failed to parse.
|
|
|
|
|
+ // Native delegation prompts (e.g. OpenCode's "@agent" expansion) are
|
|
|
|
|
+ // synthetic but never task-status shaped — skip silently.
|
|
|
|
|
+ if (parseTaskIdFromTaskOutput(part.text) || parseTaskStateFromOutput(part.text)) {
|
|
|
|
|
+ log('[task-session-manager] synthetic part missing task status', {
|
|
|
|
|
+ textPreview: part.text.slice(0, 120),
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
return undefined;
|
|
return undefined;
|
|
|
}
|
|
}
|
|
|
if (status.state !== 'completed' && status.state !== 'error') {
|
|
if (status.state !== 'completed' && status.state !== 'error') {
|