src/vs/workbench/api/browser/mainThreadTerminalService.ts/MainThreadTerminalService/$registerQuickFixProvider
class MainThreadTerminalService:	public async $registerQuickFixProvider(id: string, extensionId: string): Promise<void> {
		this._quickFixProviders.set(id, this._terminalQuickFixService.registerQuickFixProvider(id,
			{
				provideTerminalQuickFixes: async (terminalCommand: ITerminalCommand, lines: string[], option: ITerminalQuickFixOptions, token: CancellationToken) => {
					if (token.isCancellationRequested) {
						return;
					}
					if (option.outputMatcher?.length && option.outputMatcher.length > 40) {
						option.outputMatcher.length = 40;
						this._logService.warn('Cannot exceed output matcher length of 40');
					}
					const commandLineMatch = terminalCommand.command.match(option.commandLineMatcher);
					if (!commandLineMatch) {
						return;
					}
					const outputMatcher = option.outputMatcher;
					let outputMatch;
					if (outputMatcher) {
						outputMatch = getOutputMatchForLines(lines, outputMatcher);
					}
					if (!outputMatch) {
						return;
					}
					const matchResult = { commandLineMatch, outputMatch, commandLine: terminalCommand.command };

					if (matchResult) {
						const result = await this._proxy.$provideTerminalQuickFixes(id, matchResult, token);
						if (result && Array.isArray(result)) {
							return result.map(r => {
								return {
									id,
									source: extensionId,
									...r
								};
							});
						} else if (result) {
							return {
								id,
								source: extensionId,
								...result
							};
						}
					}
					return;
				}
			})
		);
	}