mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-25 09:06:21 +01:00
add prompt header field on the prompt parsers
This commit is contained in:
@@ -58,12 +58,14 @@ export class BasePromptParser<TContentsProvider extends IPromptContentsProvider>
|
||||
private readonly _references: IPromptReference[] = [];
|
||||
|
||||
/**
|
||||
* TODO: @legomushroom
|
||||
* Reference to the prompt header object that holds metadata associated
|
||||
* with the prompt.
|
||||
*/
|
||||
private promptHeader?: PromptHeader;
|
||||
|
||||
/**
|
||||
* TODO: @legomushroom
|
||||
* Reference to the prompt header object that holds metadata associated
|
||||
* with the prompt.
|
||||
*/
|
||||
public get header(): PromptHeader | undefined {
|
||||
return this.promptHeader;
|
||||
@@ -144,7 +146,7 @@ export class BasePromptParser<TContentsProvider extends IPromptContentsProvider>
|
||||
|
||||
await this.stream.settled;
|
||||
|
||||
// TODO: @legomushroom
|
||||
// if prompt header exists, also wait for it to be settled
|
||||
if (this.promptHeader) {
|
||||
await this.promptHeader.settled;
|
||||
}
|
||||
@@ -240,6 +242,7 @@ export class BasePromptParser<TContentsProvider extends IPromptContentsProvider>
|
||||
delete this._errorCondition;
|
||||
this.receivedTokens = [];
|
||||
|
||||
// cleanup current prompt header object
|
||||
this.promptHeader?.dispose();
|
||||
delete this.promptHeader;
|
||||
|
||||
@@ -268,6 +271,7 @@ export class BasePromptParser<TContentsProvider extends IPromptContentsProvider>
|
||||
this.receivedTokens.push(token);
|
||||
}
|
||||
|
||||
// if a prompt header token received, create a new prompt header instance
|
||||
if (token instanceof FrontMatterHeader) {
|
||||
this.promptHeader = new PromptHeader(token.contentToken);
|
||||
this.promptHeader.start();
|
||||
|
||||
+9
-3
@@ -4,15 +4,21 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { PromptMetadataDiagnostic } from '../diagnostics.js';
|
||||
import { FrontMatterToken } from '../../../../../../../../editor/common/codecs/frontMatterCodec/tokens/index.js';
|
||||
import { Range } from '../../../../../../../../editor/common/core/range.js';
|
||||
|
||||
/**
|
||||
* Abstract class for all metadata records in the prompt header.
|
||||
*/
|
||||
// TODO: @legomushroom - can drop the extension of `FrontMatterToken`?
|
||||
export abstract class PromptMetadataToken extends FrontMatterToken {
|
||||
export abstract class PromptMetadataRecord {
|
||||
/**
|
||||
* List of diagnostic objects related to this metadata record.
|
||||
*/
|
||||
abstract readonly diagnostics: readonly PromptMetadataDiagnostic[];
|
||||
|
||||
constructor(
|
||||
/**
|
||||
* Full range of the metadata's record text in the prompt header.
|
||||
*/
|
||||
public readonly range: Range,
|
||||
) { }
|
||||
}
|
||||
+2
-10
@@ -3,7 +3,7 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { PromptMetadataToken } from './metadataToken.js';
|
||||
import { PromptMetadataRecord } from './record.js';
|
||||
import { localize2 } from '../../../../../../../../nls.js';
|
||||
import { assert } from '../../../../../../../../base/common/assert.js';
|
||||
import { PromptMetadataDiagnostic, PromptMetadataError, PromptMetadataWarning } from '../diagnostics.js';
|
||||
@@ -17,7 +17,7 @@ const TOOLS_NAME = 'tools';
|
||||
/**
|
||||
* Prompt `tools` metadata record inside the prompt header.
|
||||
*/
|
||||
export class PromptTools extends PromptMetadataToken {
|
||||
export class PromptTools extends PromptMetadataRecord {
|
||||
/**
|
||||
* Private field for tracking all diagnostic issues
|
||||
* related to this metadata record.
|
||||
@@ -171,12 +171,4 @@ export class PromptTools extends PromptMetadataToken {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override get text(): string {
|
||||
return this.recordToken.text;
|
||||
}
|
||||
|
||||
public override toString(): string {
|
||||
return `prompt - tools(${this.shortText()})${this.range}`;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user