mirror of
http://192.168.0.88:13333/lywsvip/openclaw-zero-token.git
synced 2026-05-08 16:17:54 +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
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { type NodeMatchCandidate, resolveNodeIdFromCandidates } from "./node-match.js";
|
|
|
|
type ResolveNodeFromListOptions<TNode extends NodeMatchCandidate> = {
|
|
allowDefault?: boolean;
|
|
pickDefaultNode?: (nodes: TNode[]) => TNode | null;
|
|
};
|
|
|
|
export function resolveNodeIdFromNodeList<TNode extends NodeMatchCandidate>(
|
|
nodes: TNode[],
|
|
query?: string,
|
|
options: ResolveNodeFromListOptions<TNode> = {},
|
|
): string {
|
|
const q = String(query ?? "").trim();
|
|
if (!q) {
|
|
if (options.allowDefault === true && options.pickDefaultNode) {
|
|
const picked = options.pickDefaultNode(nodes);
|
|
if (picked) {
|
|
return picked.nodeId;
|
|
}
|
|
}
|
|
throw new Error("node required");
|
|
}
|
|
return resolveNodeIdFromCandidates(nodes, q);
|
|
}
|
|
|
|
export function resolveNodeFromNodeList<TNode extends NodeMatchCandidate>(
|
|
nodes: TNode[],
|
|
query?: string,
|
|
options: ResolveNodeFromListOptions<TNode> = {},
|
|
): TNode {
|
|
const nodeId = resolveNodeIdFromNodeList(nodes, query, options);
|
|
return nodes.find((node) => node.nodeId === nodeId) ?? ({ nodeId } as TNode);
|
|
}
|