Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/prompts/node/inline/summarizedDocument/summarizeDocument.ts
13406 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
import { VsCodeTextDocument } from '../../../../../platform/editing/common/abstractText';
6
import { TextDocumentSnapshot } from '../../../../../platform/editing/common/textDocumentSnapshot';
7
import { OverlayNode } from '../../../../../platform/parser/node/nodes';
8
import { StringEdit } from '../../../../../util/vs/editor/common/core/edits/stringEdit';
9
import { Range } from '../../../../../vscodeTypes';
10
import { ICostFnFactory, IProjectedDocumentDebugInfo, ISummarizedDocumentSettings as ISummarizedDocumentSettingsImpl, RemovableNode, summarizeDocumentsSyncImpl } from './implementation';
11
import { ProjectedText } from './projectedText';
12
13
export type ISummarizedDocumentSettings = ISummarizedDocumentSettingsImpl<VsCodeTextDocument>;
14
15
export class ProjectedDocument extends ProjectedText {
16
constructor(
17
originalText: string,
18
edits: StringEdit,
19
public readonly languageId: string,
20
) {
21
super(originalText, edits);
22
}
23
}
24
25
export interface IDocumentSummarizationItem {
26
document: TextDocumentSnapshot;
27
selection: Range | undefined;
28
overlayNodeRoot: OverlayNode;
29
}
30
31
export { ICostFnFactory, RemovableNode };
32
33
export function summarizeDocumentsSync(
34
charLimit: number,
35
settings: ISummarizedDocumentSettings,
36
items: IDocumentSummarizationItem[],
37
): ProjectedDocument[] {
38
const result = summarizeDocumentsSyncImpl(charLimit, settings, items.map(i => ({
39
document: new VsCodeTextDocument(i.document),
40
selection: i.selection,
41
overlayNodeRoot: i.overlayNodeRoot,
42
})));
43
return result.map(r => {
44
const d = new ProjectedDocument(r.originalText, r.edits, r.baseDocument.languageId);
45
(d as IProjectedDocumentDebugInfo).getVisualization = (r as IProjectedDocumentDebugInfo).getVisualization;
46
return d;
47
});
48
}
49
50