mirror of
https://github.com/morluto/rea.git
synced 2026-10-30 11:25:39 +00:00
Seal sensitive terminal chunks before deferred rendering, apply one bounded capture-local literal matcher, and retain exact redacted byte accounting. Keep private input facts in explicit fields and separate comparison policies. Retain distinct terminal failures once and verify structured refusal facts. Fixes #7782 BREAKING CHANGE: sensitive interaction data is empty with sensitive and input_bytes fields instead of a byte-count placeholder. Sensitive raw_data is also redacted. Read input_bytes and recapture both comparison sides when migrating older private-input Evidence. Assisted-by: Reimu (gensokyo-skills:reimu-incident-triage) Assisted-by: Kogasa (gensokyo-skills:kogasa-surprise-testing) Assisted-by: Yukari (gensokyo-skills:yukari-boundary-analysis)
22 lines
803 B
JavaScript
22 lines
803 B
JavaScript
if (process.stdin.isTTY) process.stdin.setRawMode(true);
|
|
process.stdin.resume();
|
|
process.stdout.write("READY\n");
|
|
let pending = "";
|
|
process.stdin.on("data", (data) => {
|
|
pending += data.toString();
|
|
if (!/[\r\n]/u.test(pending)) return;
|
|
process.stdin.pause();
|
|
const value = pending.replace(/[\r\n]+$/u, "");
|
|
process.stdout.write(`echo:${value}\n`);
|
|
const middle = Math.floor(value.length / 2);
|
|
process.stdout.write(`split:${value.slice(0, middle)}`);
|
|
setTimeout(() => {
|
|
process.stdout.write(`${value.slice(middle)}\n`);
|
|
process.stdout.write(
|
|
`style:${value.slice(0, middle)}\u001b[31m${value.slice(middle)}\u001b[0m\nPUBLIC_TAIL\n`,
|
|
);
|
|
if (process.argv.includes("--linger")) setInterval(() => {}, 1000);
|
|
else setTimeout(() => process.exit(0), 30);
|
|
}, 120);
|
|
});
|