From 238d81ad4f79d8c15cd5124a2a62d1ae36f04b19 Mon Sep 17 00:00:00 2001 From: Zhiming Ma Date: Mon, 30 Oct 2023 10:58:25 +0800 Subject: [PATCH] feat(agent): add experimental option: strip auto-closing chars in prompt suffix. (#651) * feat(agent): add experimental option: strip auto-closing chars in prompt suffix. * fix: rename settings adding experimental prefix. --- clients/tabby-agent/src/AgentConfig.ts | 2 ++ clients/tabby-agent/src/TabbyAgent.ts | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/clients/tabby-agent/src/AgentConfig.ts b/clients/tabby-agent/src/AgentConfig.ts index b227b75..864cba1 100644 --- a/clients/tabby-agent/src/AgentConfig.ts +++ b/clients/tabby-agent/src/AgentConfig.ts @@ -8,6 +8,7 @@ export type AgentConfig = { }; completion: { prompt: { + experimentalStripAutoClosingCharacters: boolean; maxPrefixLines: number; maxSuffixLines: number; }; @@ -46,6 +47,7 @@ export const defaultAgentConfig: AgentConfig = { }, completion: { prompt: { + experimentalStripAutoClosingCharacters: false, maxPrefixLines: 20, maxSuffixLines: 20, }, diff --git a/clients/tabby-agent/src/TabbyAgent.ts b/clients/tabby-agent/src/TabbyAgent.ts index 081a784..9e9f3c0 100644 --- a/clients/tabby-agent/src/TabbyAgent.ts +++ b/clients/tabby-agent/src/TabbyAgent.ts @@ -264,10 +264,14 @@ export class TabbyAgent extends EventEmitter implements Agent { const maxPrefixLines = this.config.completion.prompt.maxPrefixLines; const maxSuffixLines = this.config.completion.prompt.maxSuffixLines; const { prefixLines, suffixLines } = context; - return { - prefix: prefixLines.slice(Math.max(prefixLines.length - maxPrefixLines, 0)).join(""), - suffix: suffixLines.slice(0, maxSuffixLines).join(""), - }; + const prefix = prefixLines.slice(Math.max(prefixLines.length - maxPrefixLines, 0)).join(""); + let suffix; + if (this.config.completion.prompt.experimentalStripAutoClosingCharacters && context.mode !== "fill-in-line") { + suffix = "\n" + suffixLines.slice(1, maxSuffixLines).join(""); + } else { + suffix = suffixLines.slice(0, maxSuffixLines).join(""); + } + return { prefix, suffix }; } private calculateReplaceRange(response: CompletionResponse, context: CompletionContext): CompletionResponse {