mirror of
https://github.com/stablyai/orca.git
synced 2026-10-01 00:02:10 +00:00
The payload is one concatenated string, so slice boundaries follow document order rather than responsibility -- but join is associative, so cutting a slice into consecutive slices is byte-identical by construction. Splits the widest slice, which carried fit-scale, a DECSET scanner and the write queue together with no room left under the line cap. Adds a hash guard. The behavioral tests each execute one region of the payload in a vm, so an edit to an uncovered region shipped silently; the composed output is now pinned by sha256 and length. Derives the source-file list from the composer's own imports instead of a second hardcoded list a new slice had to be added to by hand -- the same silent subject-loss shape already found twice elsewhere in this repo.
32 lines
1.3 KiB
TypeScript
32 lines
1.3 KiB
TypeScript
import { readFileSync } from 'node:fs'
|
|
|
|
const COMPOSER_FILE = './terminal-webview-html.ts'
|
|
const SLICE_IMPORT_RE = /^import \{[^}]*\} from '(\.\/terminal-webview-html\/[\w-]+)'$/gm
|
|
const COMPOSED_ENTRY_RE = /^ {2}TERMINAL_HTML_\w+,?$/gm
|
|
|
|
function readSource(relativePath: string): string {
|
|
return readFileSync(new URL(relativePath, import.meta.url), 'utf8')
|
|
}
|
|
|
|
/**
|
|
* Reads the TypeScript source that assembles the in-WebView document.
|
|
*
|
|
* Why: the slice list is derived from the composer's own imports rather than duplicated, so a
|
|
* new slice cannot join the emitted document while staying invisible to the tests that search
|
|
* this source. The count cross-check catches an import shape the regex cannot see.
|
|
*/
|
|
export function readTerminalWebViewHtmlSource(): string {
|
|
const composer = readSource(COMPOSER_FILE)
|
|
const slices = [...composer.matchAll(SLICE_IMPORT_RE)].map((match) => `${match[1]}.ts`)
|
|
const composedCount = [...composer.matchAll(COMPOSED_ENTRY_RE)].length
|
|
if (composedCount === 0) {
|
|
throw new Error('no composed WebView document slices found')
|
|
}
|
|
if (slices.length !== composedCount) {
|
|
throw new Error(
|
|
`WebView document slice imports (${slices.length}) do not match composed entries (${composedCount})`
|
|
)
|
|
}
|
|
return [composer, ...slices.map(readSource)].join('\n')
|
|
}
|