Path: blob/main/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { IAction } from '../../../../base/common/actions.js';6import { AsyncIterableObject } from '../../../../base/common/async.js';7import { CancellationToken } from '../../../../base/common/cancellation.js';8import { Event } from '../../../../base/common/event.js';9import { IDisposable } from '../../../../base/common/lifecycle.js';10import { URI } from '../../../../base/common/uri.js';11import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';12import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';13import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';14import { INotebookKernelSourceAction } from './notebookCommon.js';1516export interface ISelectedNotebooksChangeEvent {17notebook: URI;18oldKernel: string | undefined;19newKernel: string | undefined;20}2122export interface INotebookKernelMatchResult {23readonly selected: INotebookKernel | undefined;24readonly suggestions: INotebookKernel[];25readonly all: INotebookKernel[];26readonly hidden: INotebookKernel[];27}282930export interface INotebookKernelChangeEvent {31label?: true;32description?: true;33detail?: true;34supportedLanguages?: true;35hasExecutionOrder?: true;36hasInterruptHandler?: true;37hasVariableProvider?: true;38}3940export interface VariablesResult {41id: number;42name: string;43value: string;44type?: string;45hasNamedChildren: boolean;46indexedChildrenCount: number;47}4849export const variablePageSize = 100;5051export interface INotebookKernel {52readonly id: string;53readonly viewType: string;54readonly onDidChange: Event<Readonly<INotebookKernelChangeEvent>>;55readonly extension: ExtensionIdentifier;5657readonly localResourceRoot: URI;58readonly preloadUris: URI[];59readonly preloadProvides: string[];6061label: string;62description?: string;63detail?: string;64supportedLanguages: string[];65implementsInterrupt?: boolean;66implementsExecutionOrder?: boolean;67hasVariableProvider?: boolean;6869executeNotebookCellsRequest(uri: URI, cellHandles: number[]): Promise<void>;70cancelNotebookCellExecution(uri: URI, cellHandles: number[]): Promise<void>;7172provideVariables(notebookUri: URI, parentId: number | undefined, kind: 'named' | 'indexed', start: number, token: CancellationToken): AsyncIterableObject<VariablesResult>;73}7475export const enum ProxyKernelState {76Disconnected = 1,77Connected = 2,78Initializing = 379}8081export interface INotebookProxyKernelChangeEvent extends INotebookKernelChangeEvent {82connectionState?: true;83}8485export interface INotebookKernelDetectionTask {86readonly notebookType: string;87}8889export interface ISourceAction {90readonly action: IAction;91readonly onDidChangeState: Event<void>;92readonly isPrimary?: boolean;93execution: Promise<void> | undefined;94runAction: () => Promise<void>;95}9697export interface INotebookSourceActionChangeEvent {98notebook?: URI;99viewType: string;100}101102export interface IKernelSourceActionProvider {103readonly viewType: string;104onDidChangeSourceActions?: Event<void>;105provideKernelSourceActions(): Promise<INotebookKernelSourceAction[]>;106}107108export interface INotebookTextModelLike { uri: URI; notebookType: string }109110export const INotebookKernelService = createDecorator<INotebookKernelService>('INotebookKernelService');111112export interface INotebookKernelService {113_serviceBrand: undefined;114115readonly onDidAddKernel: Event<INotebookKernel>;116readonly onDidRemoveKernel: Event<INotebookKernel>;117readonly onDidChangeSelectedNotebooks: Event<ISelectedNotebooksChangeEvent>;118readonly onDidChangeNotebookAffinity: Event<void>;119readonly onDidNotebookVariablesUpdate: Event<URI>;120registerKernel(kernel: INotebookKernel): IDisposable;121122getMatchingKernel(notebook: INotebookTextModelLike): INotebookKernelMatchResult;123124/**125* Returns the selected or only available kernel.126*/127getSelectedOrSuggestedKernel(notebook: INotebookTextModelLike): INotebookKernel | undefined;128129/**130* Bind a notebook document to a kernel. A notebook is only bound to one kernel131* but a kernel can be bound to many notebooks (depending on its configuration)132*/133selectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void;134135/**136* Set the kernel that a notebook should use when it starts up137*/138preselectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void;139140/**141* Set a perference of a kernel for a certain notebook. Higher values win, `undefined` removes the preference142*/143updateKernelNotebookAffinity(kernel: INotebookKernel, notebook: URI, preference: number | undefined): void;144145//#region Kernel detection tasks146readonly onDidChangeKernelDetectionTasks: Event<string>;147registerNotebookKernelDetectionTask(task: INotebookKernelDetectionTask): IDisposable;148getKernelDetectionTasks(notebook: INotebookTextModelLike): INotebookKernelDetectionTask[];149//#endregion150151//#region Kernel source actions152readonly onDidChangeSourceActions: Event<INotebookSourceActionChangeEvent>;153getSourceActions(notebook: INotebookTextModelLike, contextKeyService: IContextKeyService | undefined): ISourceAction[];154getRunningSourceActions(notebook: INotebookTextModelLike): ISourceAction[];155registerKernelSourceActionProvider(viewType: string, provider: IKernelSourceActionProvider): IDisposable;156getKernelSourceActions2(notebook: INotebookTextModelLike): Promise<INotebookKernelSourceAction[]>;157//#endregion158159notifyVariablesChange(notebookUri: URI): void;160}161162export const INotebookKernelHistoryService = createDecorator<INotebookKernelHistoryService>('INotebookKernelHistoryService');163export interface INotebookKernelHistoryService {164_serviceBrand: undefined;165getKernels(notebook: INotebookTextModelLike): { selected: INotebookKernel | undefined; all: INotebookKernel[] };166addMostRecentKernel(kernel: INotebookKernel): void;167}168169170