Files
openclaw-zero-token/shared/text/code-regions.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
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
2026-03-30 17:58:12 +08:00

32 lines
932 B
TypeScript

export interface CodeRegion {
start: number;
end: number;
}
export function findCodeRegions(text: string): CodeRegion[] {
const regions: CodeRegion[] = [];
const fencedRe = /(^|\n)(```|~~~)[^\n]*\n[\s\S]*?(?:\n\2|$)/g;
for (const match of text.matchAll(fencedRe)) {
const start = (match.index ?? 0) + match[1].length;
regions.push({ start, end: start + match[0].length - match[1].length });
}
const inlineRe = /`+[^`]+`+/g;
for (const match of text.matchAll(inlineRe)) {
const start = match.index ?? 0;
const end = start + match[0].length;
const insideFenced = regions.some((r) => start >= r.start && end <= r.end);
if (!insideFenced) {
regions.push({ start, end });
}
}
regions.sort((a, b) => a.start - b.start);
return regions;
}
export function isInsideCode(pos: number, regions: CodeRegion[]): boolean {
return regions.some((r) => pos >= r.start && pos < r.end);
}