fix: pass arguments to commands without explicit placeholders (#9606)
This commit is contained in:
@@ -546,16 +546,22 @@ export function Prompt(props: PromptProps) {
|
|||||||
} else if (
|
} else if (
|
||||||
inputText.startsWith("/") &&
|
inputText.startsWith("/") &&
|
||||||
iife(() => {
|
iife(() => {
|
||||||
const command = inputText.split(" ")[0].slice(1)
|
const firstLine = inputText.split("\n")[0]
|
||||||
console.log(command)
|
const command = firstLine.split(" ")[0].slice(1)
|
||||||
return sync.data.command.some((x) => x.name === command)
|
return sync.data.command.some((x) => x.name === command)
|
||||||
})
|
})
|
||||||
) {
|
) {
|
||||||
let [command, ...args] = inputText.split(" ")
|
// Parse command from first line, preserve multi-line content in arguments
|
||||||
|
const firstLineEnd = inputText.indexOf("\n")
|
||||||
|
const firstLine = firstLineEnd === -1 ? inputText : inputText.slice(0, firstLineEnd)
|
||||||
|
const [command, ...firstLineArgs] = firstLine.split(" ")
|
||||||
|
const restOfInput = firstLineEnd === -1 ? "" : inputText.slice(firstLineEnd + 1)
|
||||||
|
const args = firstLineArgs.join(" ") + (restOfInput ? "\n" + restOfInput : "")
|
||||||
|
|
||||||
sdk.client.session.command({
|
sdk.client.session.command({
|
||||||
sessionID,
|
sessionID,
|
||||||
command: command.slice(1),
|
command: command.slice(1),
|
||||||
arguments: args.join(" "),
|
arguments: args,
|
||||||
agent: local.agent.current().name,
|
agent: local.agent.current().name,
|
||||||
model: `${selectedModel.providerID}/${selectedModel.modelID}`,
|
model: `${selectedModel.providerID}/${selectedModel.modelID}`,
|
||||||
messageID,
|
messageID,
|
||||||
|
|||||||
@@ -1627,8 +1627,15 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
|||||||
if (position === last) return args.slice(argIndex).join(" ")
|
if (position === last) return args.slice(argIndex).join(" ")
|
||||||
return args[argIndex]
|
return args[argIndex]
|
||||||
})
|
})
|
||||||
|
const usesArgumentsPlaceholder = templateCommand.includes("$ARGUMENTS")
|
||||||
let template = withArgs.replaceAll("$ARGUMENTS", input.arguments)
|
let template = withArgs.replaceAll("$ARGUMENTS", input.arguments)
|
||||||
|
|
||||||
|
// If command doesn't explicitly handle arguments (no $N or $ARGUMENTS placeholders)
|
||||||
|
// but user provided arguments, append them to the template
|
||||||
|
if (placeholders.length === 0 && !usesArgumentsPlaceholder && input.arguments.trim()) {
|
||||||
|
template = template + "\n\n" + input.arguments
|
||||||
|
}
|
||||||
|
|
||||||
const shell = ConfigMarkdown.shell(template)
|
const shell = ConfigMarkdown.shell(template)
|
||||||
if (shell.length > 0) {
|
if (shell.length > 0) {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
|
|||||||
Reference in New Issue
Block a user