mirror of
http://192.168.0.88:13333/lywsvip/openclaw-zero-token.git
synced 2026-06-20 12:13:00 +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
16 lines
691 B
TypeScript
16 lines
691 B
TypeScript
import { createHash, randomBytes } from "node:crypto";
|
|
|
|
/** Encode a flat object as application/x-www-form-urlencoded form data. */
|
|
export function toFormUrlEncoded(data: Record<string, string>): string {
|
|
return Object.entries(data)
|
|
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
.join("&");
|
|
}
|
|
|
|
/** Generate a PKCE verifier/challenge pair suitable for OAuth authorization flows. */
|
|
export function generatePkceVerifierChallenge(): { verifier: string; challenge: string } {
|
|
const verifier = randomBytes(32).toString("base64url");
|
|
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
return { verifier, challenge };
|
|
}
|