mirror of
http://192.168.0.88:13333/lywsvip/openclaw-zero-token.git
synced 2026-05-31 14:12:38 +08:00
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
49 lines
1.0 KiB
TypeScript
49 lines
1.0 KiB
TypeScript
export type ArgSplitEscapeMode = "none" | "backslash" | "backslash-quote-only";
|
|
|
|
export function splitArgsPreservingQuotes(
|
|
value: string,
|
|
options?: { escapeMode?: ArgSplitEscapeMode },
|
|
): string[] {
|
|
const args: string[] = [];
|
|
let current = "";
|
|
let inQuotes = false;
|
|
const escapeMode = options?.escapeMode ?? "none";
|
|
|
|
for (let i = 0; i < value.length; i++) {
|
|
const char = value[i];
|
|
if (escapeMode === "backslash" && char === "\\") {
|
|
if (i + 1 < value.length) {
|
|
current += value[i + 1];
|
|
i++;
|
|
}
|
|
continue;
|
|
}
|
|
if (
|
|
escapeMode === "backslash-quote-only" &&
|
|
char === "\\" &&
|
|
i + 1 < value.length &&
|
|
value[i + 1] === '"'
|
|
) {
|
|
current += '"';
|
|
i++;
|
|
continue;
|
|
}
|
|
if (char === '"') {
|
|
inQuotes = !inQuotes;
|
|
continue;
|
|
}
|
|
if (!inQuotes && /\s/.test(char)) {
|
|
if (current) {
|
|
args.push(current);
|
|
current = "";
|
|
}
|
|
continue;
|
|
}
|
|
current += char;
|
|
}
|
|
if (current) {
|
|
args.push(current);
|
|
}
|
|
return args;
|
|
}
|