@@ -19,6 +19,7 @@ const MAX_ACTION_ARGS = 50;
1919const MAX_ACTION_ARG_CHARS = 20_000 ;
2020const MAX_ACTION_METHOD_CHARS = 128 ;
2121const MAX_ACTION_TEXT_CHARS = 1_000 ;
22+ const MAX_ACTION_DIAGNOSTIC_CHARS = 400 ;
2223
2324function sanitizeActionText ( value : string ) : string {
2425 if ( value . length === 0 ) {
@@ -66,6 +67,18 @@ function normalizeMethodInput(value: unknown): string {
6667 return normalizeTextInput ( value , "click" , MAX_ACTION_METHOD_CHARS ) ;
6768}
6869
70+ function formatPerformActionDiagnostic ( value : unknown ) : string {
71+ const normalized = sanitizeActionText ( formatUnknownError ( value ) ) ;
72+ if ( normalized . length === 0 ) {
73+ return "unknown error" ;
74+ }
75+ if ( normalized . length <= MAX_ACTION_DIAGNOSTIC_CHARS ) {
76+ return normalized ;
77+ }
78+ const omittedChars = normalized . length - MAX_ACTION_DIAGNOSTIC_CHARS ;
79+ return `${ normalized . slice ( 0 , MAX_ACTION_DIAGNOSTIC_CHARS ) } ... [truncated ${ omittedChars } chars]` ;
80+ }
81+
6982function normalizeActionArguments ( value : unknown ) : string [ ] {
7083 if ( ! Array . isArray ( value ) ) return [ ] ;
7184 return value . slice ( 0 , MAX_ACTION_ARGS ) . map ( ( arg ) =>
@@ -94,12 +107,18 @@ function readVariables(ctx: ActionContext): Array<{ key: string; value: string }
94107 return normalized ;
95108}
96109
97- function buildFailureMessage ( instruction : string , error : unknown ) : string {
110+ function buildFailureMessage (
111+ instruction : string ,
112+ error : unknown ,
113+ details ?: string
114+ ) : string {
115+ const diagnostic = formatPerformActionDiagnostic ( error ) ;
116+ const suffix = details ? `${ details } : ${ diagnostic } ` : diagnostic ;
98117 return `Failed to execute "${ normalizeTextInput (
99118 instruction ,
100119 "task" ,
101120 MAX_ACTION_TEXT_CHARS
102- ) } ": ${ normalizeTextInput ( formatUnknownError ( error ) , "unknown error" , MAX_ACTION_TEXT_CHARS ) } `;
121+ ) } ": ${ suffix } `;
103122}
104123
105124function interpolateVariables ( value : string , ctx : ActionContext ) : string {
@@ -158,10 +177,7 @@ export async function performAction(
158177 } catch ( error ) {
159178 return {
160179 success : false ,
161- message : buildFailureMessage (
162- resolvedInstruction ,
163- `DOM element lookup failed: ${ formatUnknownError ( error ) } `
164- ) ,
180+ message : buildFailureMessage ( resolvedInstruction , error , "DOM element lookup failed" ) ,
165181 } ;
166182 }
167183 if ( ! elementMetadata ) {
0 commit comments