fix(ralph-loop): use shared isRecord, fix quoted argument parsing for prompt and completion-promise
This commit is contained in:
@@ -10,19 +10,21 @@ export type ParsedRalphLoopArguments = {
|
||||
const DEFAULT_PROMPT = "Complete the task as instructed"
|
||||
|
||||
export function parseRalphLoopArguments(rawArguments: string): ParsedRalphLoopArguments {
|
||||
const taskMatch = rawArguments.match(/^["'](.+?)["']/)
|
||||
const promptCandidate = taskMatch?.[1] ?? (rawArguments.startsWith("--") ? "" : rawArguments.split(/\s+--/)[0]?.trim() ?? "")
|
||||
const taskMatch = rawArguments.match(/^(["'])(.+?)\1/)
|
||||
const promptCandidate = taskMatch?.[2] ?? (rawArguments.startsWith("--") ? "" : rawArguments.split(/\s+--/)[0]?.trim() ?? "")
|
||||
const prompt = promptCandidate || DEFAULT_PROMPT
|
||||
|
||||
const maxIterationMatch = rawArguments.match(/--max-iterations=(\d+)/i)
|
||||
const completionPromiseMatch = rawArguments.match(/--completion-promise=["']?([^"'\s]+)["']?/i)
|
||||
const completionPromiseQuoted = rawArguments.match(/--completion-promise=(["'])(.+?)\1/i)
|
||||
const completionPromiseUnquoted = rawArguments.match(/--completion-promise=([^\s"']+)/i)
|
||||
const completionPromise = completionPromiseQuoted?.[2] ?? completionPromiseUnquoted?.[1]
|
||||
const strategyMatch = rawArguments.match(/--strategy=(reset|continue)/i)
|
||||
const strategyValue = strategyMatch?.[1]?.toLowerCase()
|
||||
|
||||
return {
|
||||
prompt,
|
||||
maxIterations: maxIterationMatch ? Number.parseInt(maxIterationMatch[1], 10) : undefined,
|
||||
completionPromise: completionPromiseMatch?.[1],
|
||||
completionPromise,
|
||||
strategy: strategyValue === "reset" || strategyValue === "continue" ? strategyValue : undefined,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user