fix: pass arguments to commands without explicit placeholders (#9606)

This commit is contained in:
Tommy D. Rossi
2026-01-20 18:12:43 +01:00
committed by GitHub
parent 5622c53e1f
commit 68e41a1ee7
2 changed files with 17 additions and 4 deletions

View File

@@ -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,

View File

@@ -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(