mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +08:00
- Narrow guarded array receivers while preparing callback signatures. - Cover filter, map, and join chains against Node in native builds. Fixes #472 Co-authored-by: Hagege Ruben <20857346+HagegeR@users.noreply.github.com>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
// @dynamic
|
|
type Block = { type: "text"; text: string } | { type: "image"; url: string };
|
|
type Message = { role: string; content: Block[] };
|
|
|
|
let separators = 0;
|
|
function separator(): string {
|
|
separators++;
|
|
return "|";
|
|
}
|
|
|
|
function render(messages: Message[]): string {
|
|
const lastAssistant = messages.findLast((message) => message.role === "assistant");
|
|
return lastAssistant?.content
|
|
.filter((block) => block.type === "text")
|
|
.map((block) => block.text)
|
|
.join(separator()) ?? "<none>";
|
|
}
|
|
|
|
console.log(render([
|
|
{ role: "assistant", content: [{ type: "text", text: "old" }] },
|
|
{ role: "user", content: [{ type: "text", text: "ignored" }] },
|
|
{ role: "assistant", content: [
|
|
{ type: "text", text: "first" },
|
|
{ type: "image", url: "skip" },
|
|
{ type: "text", text: "second" },
|
|
] },
|
|
]), separators);
|
|
console.log(render([{ role: "user", content: [{ type: "text", text: "ignored" }] }]), separators);
|
|
|
|
function maybeLabels(present: boolean): string[] | undefined {
|
|
return present ? ["ALPHA", "BETA"] : undefined;
|
|
}
|
|
console.log(maybeLabels(true)?.map((label) => label.toLowerCase()).join(",") ?? "<none>");
|
|
console.log(maybeLabels(false)?.map((label) => label.toLowerCase()).join(",") ?? "<none>");
|