Skip to content

Commit c2a0394

Browse files
committed
allow for non-quoted string values inside front matter arrays
1 parent c9eb197 commit c2a0394

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

src/vs/editor/common/codecs/frontMatterCodec/parsers/frontMatterArray.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { VALID_INTER_RECORD_SPACING_TOKENS } from '../constants.js';
76
import { assert } from '../../../../../base/common/assert.js';
87
import { PartialFrontMatterValue } from './frontMatterValue.js';
98
import { FrontMatterArray } from '../tokens/frontMatterArray.js';
109
import { assertDefined } from '../../../../../base/common/types.js';
10+
import { VALID_INTER_RECORD_SPACING_TOKENS } from '../constants.js';
1111
import { FrontMatterValueToken } from '../tokens/frontMatterToken.js';
12+
import { FrontMatterSequence } from '../tokens/frontMatterSequence.js';
1213
import { TSimpleDecoderToken } from '../../simpleCodec/simpleDecoder.js';
1314
import { Comma, LeftBracket, RightBracket } from '../../simpleCodec/tokens/index.js';
1415
import { assertNotConsumed, ParserBase, TAcceptTokenResult } from '../../simpleCodec/parserBase.js';
15-
import { FrontMatterSequence } from '../tokens/frontMatterSequence.js';
1616

1717
/**
1818
* List of tokens that can go in-between array items
@@ -162,7 +162,7 @@ export class PartialFrontMatterArray extends ParserBase<TSimpleDecoderToken, Par
162162

163163
assertDefined(
164164
endToken,
165-
`No tokens found.`,
165+
'No tokens found.',
166166
);
167167

168168
assert(

src/vs/editor/common/codecs/frontMatterCodec/parsers/frontMatterValue.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { BaseToken } from '../../baseToken.js';
77
import { PartialFrontMatterArray } from './frontMatterArray.js';
88
import { PartialFrontMatterString } from './frontMatterString.js';
9-
import { FrontMatterBoolean } from '../tokens/frontMatterBoolean.js';
9+
import { asBoolean, FrontMatterBoolean } from '../tokens/frontMatterBoolean.js';
1010
import { FrontMatterValueToken } from '../tokens/frontMatterToken.js';
1111
import { PartialFrontMatterSequence } from './frontMatterSequence.js';
1212
import { FrontMatterSequence } from '../tokens/frontMatterSequence.js';
@@ -154,10 +154,8 @@ export class PartialFrontMatterValue extends ParserBase<TSimpleDecoderToken, Par
154154
}
155155
}
156156

157-
if (token instanceof Word) {
158-
return ['true', 'false'].includes(
159-
token.text.toLowerCase(),
160-
);
157+
if ((token instanceof Word) && (asBoolean(token) !== null)) {
158+
return true;
161159
}
162160

163161
return false;

src/vs/editor/common/codecs/frontMatterCodec/tokens/frontMatterBoolean.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ export class FrontMatterBoolean extends FrontMatterValueToken<'boolean', readonl
7373
/**
7474
* Try to convert a {@link Word} token to a `boolean` value.
7575
*/
76-
const asBoolean = (
76+
export function asBoolean(
7777
token: Word,
78-
): boolean | null => {
78+
): boolean | null {
7979
if (token.text.toLowerCase() === 'true') {
8080
return true;
8181
}
@@ -85,4 +85,4 @@ const asBoolean = (
8585
}
8686

8787
return null;
88-
};
88+
}

src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { PromptMetadataRecord } from './base/record.js';
77
import { localize } from '../../../../../../../../nls.js';
88
import { PromptMetadataDiagnostic, PromptMetadataError, PromptMetadataWarning } from '../diagnostics.js';
9+
import { FrontMatterSequence } from '../../../../../../../../editor/common/codecs/frontMatterCodec/tokens/frontMatterSequence.js';
910
import { FrontMatterArray, FrontMatterRecord, FrontMatterString, FrontMatterToken, FrontMatterValueToken } from '../../../../../../../../editor/common/codecs/frontMatterCodec/tokens/index.js';
1011

1112
/**
@@ -99,8 +100,11 @@ export class PromptToolsMetadata extends PromptMetadataRecord {
99100
): readonly PromptMetadataDiagnostic[] {
100101
const issues: PromptMetadataDiagnostic[] = [];
101102

102-
// tool name must be a string
103-
if ((valueToken instanceof FrontMatterString) === false) {
103+
// tool name must be a quoted or an unquoted 'string'
104+
if (
105+
(valueToken instanceof FrontMatterString) === false &&
106+
(valueToken instanceof FrontMatterSequence) === false
107+
) {
104108
issues.push(
105109
new PromptMetadataWarning(
106110
valueToken.range,

0 commit comments

Comments
 (0)