Skip to content

Commit eb5c376

Browse files
committed
Wrap vs.lm.registerTool in try/catch
Fixes #5570
1 parent 924a80e commit eb5c376

1 file changed

Lines changed: 18 additions & 10 deletions

File tree

‎src/extension/extension.ts‎

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff 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)) {

0 commit comments

Comments
 (0)