File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -558,16 +558,24 @@ export async function activate(context: vs.ExtensionContext, isRestart = false)
558558 context . subscriptions . push ( vs . lm . registerMcpServerDefinitionProvider ( "dart-sdk-mcp-servers" , mcpServerProvider ) ) ;
559559 }
560560 if ( vs . lm . registerTool ) {
561- context . subscriptions . push ( vs . lm . registerTool ( "get_dart_tooling_daemon_dtd_uri" , {
562- invoke : async ( ) => {
563- if ( ! dartCapabilities . supportsToolingDaemon )
564- throw new Error ( "DTD is not available for this version of Flutter/Dart, please upgrade." ) ;
565- const dtdUri = await dartToolingDaemon ?. dtdUri ;
566- return dtdUri
567- ? new vs . LanguageModelToolResult ( [ new vs . LanguageModelTextPart ( dtdUri ) ] )
568- : undefined ;
569- } ,
570- } ) ) ;
561+ try {
562+ context . subscriptions . push ( vs . lm . registerTool ( "get_dart_tooling_daemon_dtd_uri" , {
563+ invoke : async ( ) => {
564+ if ( ! dartCapabilities . supportsToolingDaemon )
565+ throw new Error ( "DTD is not available for this version of Flutter/Dart, please upgrade." ) ;
566+ const dtdUri = await dartToolingDaemon ?. dtdUri ;
567+ return dtdUri
568+ ? new vs . LanguageModelToolResult ( [ new vs . LanguageModelTextPart ( dtdUri ) ] )
569+ : undefined ;
570+ } ,
571+ } ) ) ;
572+ } catch ( e ) {
573+ // This is required to swallow the exception on Firebase Studio (older VS Code version)
574+ // and prevent failure to activate.
575+ // https://github.com/Dart-Code/Dart-Code/issues/5570
576+ logger . warn ( "Failed to register LM Tool, ignoring - see https://github.com/Dart-Code/Dart-Code/issues/5570" ) ;
577+ logger . warn ( e ) ;
578+ }
571579 }
572580
573581 if ( dartToolingDaemon && ( dartCapabilities . supportsDevToolsPropertyEditor || config . experimentalPropertyEditor ) ) {
You can’t perform that action at this time.
0 commit comments