Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { IAction } from '../../../../base/common/actions.js';
7
import { AsyncIterableObject } from '../../../../base/common/async.js';
8
import { CancellationToken } from '../../../../base/common/cancellation.js';
9
import { Event } from '../../../../base/common/event.js';
10
import { IDisposable } from '../../../../base/common/lifecycle.js';
11
import { URI } from '../../../../base/common/uri.js';
12
import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';
13
import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
14
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
15
import { INotebookKernelSourceAction } from './notebookCommon.js';
16
17
export interface ISelectedNotebooksChangeEvent {
18
notebook: URI;
19
oldKernel: string | undefined;
20
newKernel: string | undefined;
21
}
22
23
export interface INotebookKernelMatchResult {
24
readonly selected: INotebookKernel | undefined;
25
readonly suggestions: INotebookKernel[];
26
readonly all: INotebookKernel[];
27
readonly hidden: INotebookKernel[];
28
}
29
30
31
export interface INotebookKernelChangeEvent {
32
label?: true;
33
description?: true;
34
detail?: true;
35
supportedLanguages?: true;
36
hasExecutionOrder?: true;
37
hasInterruptHandler?: true;
38
hasVariableProvider?: true;
39
}
40
41
export interface VariablesResult {
42
id: number;
43
name: string;
44
value: string;
45
type?: string;
46
hasNamedChildren: boolean;
47
indexedChildrenCount: number;
48
}
49
50
export const variablePageSize = 100;
51
52
export interface INotebookKernel {
53
readonly id: string;
54
readonly viewType: string;
55
readonly onDidChange: Event<Readonly<INotebookKernelChangeEvent>>;
56
readonly extension: ExtensionIdentifier;
57
58
readonly localResourceRoot: URI;
59
readonly preloadUris: URI[];
60
readonly preloadProvides: string[];
61
62
label: string;
63
description?: string;
64
detail?: string;
65
supportedLanguages: string[];
66
implementsInterrupt?: boolean;
67
implementsExecutionOrder?: boolean;
68
hasVariableProvider?: boolean;
69
70
executeNotebookCellsRequest(uri: URI, cellHandles: number[]): Promise<void>;
71
cancelNotebookCellExecution(uri: URI, cellHandles: number[]): Promise<void>;
72
73
provideVariables(notebookUri: URI, parentId: number | undefined, kind: 'named' | 'indexed', start: number, token: CancellationToken): AsyncIterableObject<VariablesResult>;
74
}
75
76
export const enum ProxyKernelState {
77
Disconnected = 1,
78
Connected = 2,
79
Initializing = 3
80
}
81
82
export interface INotebookProxyKernelChangeEvent extends INotebookKernelChangeEvent {
83
connectionState?: true;
84
}
85
86
export interface INotebookKernelDetectionTask {
87
readonly notebookType: string;
88
}
89
90
export interface ISourceAction {
91
readonly action: IAction;
92
readonly onDidChangeState: Event<void>;
93
readonly isPrimary?: boolean;
94
execution: Promise<void> | undefined;
95
runAction: () => Promise<void>;
96
}
97
98
export interface INotebookSourceActionChangeEvent {
99
notebook?: URI;
100
viewType: string;
101
}
102
103
export interface IKernelSourceActionProvider {
104
readonly viewType: string;
105
onDidChangeSourceActions?: Event<void>;
106
provideKernelSourceActions(): Promise<INotebookKernelSourceAction[]>;
107
}
108
109
export interface INotebookTextModelLike { uri: URI; notebookType: string }
110
111
export const INotebookKernelService = createDecorator<INotebookKernelService>('INotebookKernelService');
112
113
export interface INotebookKernelService {
114
_serviceBrand: undefined;
115
116
readonly onDidAddKernel: Event<INotebookKernel>;
117
readonly onDidRemoveKernel: Event<INotebookKernel>;
118
readonly onDidChangeSelectedNotebooks: Event<ISelectedNotebooksChangeEvent>;
119
readonly onDidChangeNotebookAffinity: Event<void>;
120
readonly onDidNotebookVariablesUpdate: Event<URI>;
121
registerKernel(kernel: INotebookKernel): IDisposable;
122
123
getMatchingKernel(notebook: INotebookTextModelLike): INotebookKernelMatchResult;
124
125
/**
126
* Returns the selected or only available kernel.
127
*/
128
getSelectedOrSuggestedKernel(notebook: INotebookTextModelLike): INotebookKernel | undefined;
129
130
/**
131
* Bind a notebook document to a kernel. A notebook is only bound to one kernel
132
* but a kernel can be bound to many notebooks (depending on its configuration)
133
*/
134
selectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void;
135
136
/**
137
* Set the kernel that a notebook should use when it starts up
138
*/
139
preselectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void;
140
141
/**
142
* Set a perference of a kernel for a certain notebook. Higher values win, `undefined` removes the preference
143
*/
144
updateKernelNotebookAffinity(kernel: INotebookKernel, notebook: URI, preference: number | undefined): void;
145
146
//#region Kernel detection tasks
147
readonly onDidChangeKernelDetectionTasks: Event<string>;
148
registerNotebookKernelDetectionTask(task: INotebookKernelDetectionTask): IDisposable;
149
getKernelDetectionTasks(notebook: INotebookTextModelLike): INotebookKernelDetectionTask[];
150
//#endregion
151
152
//#region Kernel source actions
153
readonly onDidChangeSourceActions: Event<INotebookSourceActionChangeEvent>;
154
getSourceActions(notebook: INotebookTextModelLike, contextKeyService: IContextKeyService | undefined): ISourceAction[];
155
getRunningSourceActions(notebook: INotebookTextModelLike): ISourceAction[];
156
registerKernelSourceActionProvider(viewType: string, provider: IKernelSourceActionProvider): IDisposable;
157
getKernelSourceActions2(notebook: INotebookTextModelLike): Promise<INotebookKernelSourceAction[]>;
158
//#endregion
159
160
notifyVariablesChange(notebookUri: URI): void;
161
}
162
163
export const INotebookKernelHistoryService = createDecorator<INotebookKernelHistoryService>('INotebookKernelHistoryService');
164
export interface INotebookKernelHistoryService {
165
_serviceBrand: undefined;
166
getKernels(notebook: INotebookTextModelLike): { selected: INotebookKernel | undefined; all: INotebookKernel[] };
167
addMostRecentKernel(kernel: INotebookKernel): void;
168
}
169
170