Add safe string handling for activity data properties

Use typeof check and trim to avoid displaying 'undefined' for missing properties in THOUGHT_CHUNK, TOOL_CALL_START, TOOL_CALL_END, and ERROR events.

TAG=agy
CONV=d4b1d79a-226d-4301-8d60-bdb5d4701569
This commit is contained in:
Adam Weidman
2026-05-12 00:06:26 -04:00
parent 666d1d2d52
commit 7bf9d0152f
@@ -126,7 +126,8 @@ export class LocalSessionInvocation extends BaseToolInvocation<
switch (activity.type) {
case 'THOUGHT_CHUNK': {
const text = String(activity.data['text']);
const rawText = activity.data['text'];
const text = typeof rawText === 'string' ? rawText.trim() : '';
const lastItem = recentActivity[recentActivity.length - 1];
if (
@@ -152,9 +153,10 @@ export class LocalSessionInvocation extends BaseToolInvocation<
break;
}
case 'TOOL_CALL_START': {
const name = String(activity.data['name']);
const rawName = activity.data['name'];
const name = typeof rawName === 'string' ? rawName.trim() : '';
const displayName = activity.data['displayName']
? sanitizeErrorMessage(String(activity.data['displayName']))
? sanitizeErrorMessage(String(activity.data['displayName']).trim())
: undefined;
const description = activity.data['description']
? sanitizeErrorMessage(String(activity.data['description']))
@@ -178,7 +180,8 @@ export class LocalSessionInvocation extends BaseToolInvocation<
break;
}
case 'TOOL_CALL_END': {
const name = String(activity.data['name']);
const rawName = activity.data['name'];
const name = typeof rawName === 'string' ? rawName.trim() : '';
const data = activity.data['data'];
const isError = isToolActivityError(data);
@@ -198,7 +201,8 @@ export class LocalSessionInvocation extends BaseToolInvocation<
break;
}
case 'ERROR': {
const error = String(activity.data['error']);
const rawError = activity.data['error'];
const error = typeof rawError === 'string' ? rawError.trim() : '';
const errorType = activity.data['errorType'];
const sanitizedError = sanitizeErrorMessage(error);
const isCancellation =