Something went wrong. Try again.
Identities for entities did.bot
agent llm did
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758// What a link unfurler shows when someone pastes an address from this site:// the description under the title, and what the social card depicts.//// Per-page descriptions are not listed here. A page that already shows a// written one-liner hands that same string to its layout — a section's// `intro`, a subpage's `lede`, the landing page's hero beat — so a sentence// lives in one data file and the embed and the page can never disagree.// This file holds only the two strings no page has of its own.import { isFiller } from "./filler";import { landingBeats } from "./landing-beats";
/** Used as `og:site_name`, and as the suffix on every page's title. */export const siteName = "did.bot";
/** * The fallback description, for the pages that carry no one-liner: the * landing page's own hero beat, on one line. * * It is the owner's copy (src/data/landing-beats.ts) rather than a second * sentence about the same thing. An unfurler that scrapes a page instead of * reading its tags lands on this text anyway — it is the first prose on the * front page — so making it the tag too means both routes agree, and the * eyebrow is included because a scraper drops it and the line reads as a * fragment without it. */export const siteDescription = oneLine( `${landingBeats[0].eyebrow ?? ""} ${landingBeats[0].text}`,);
/** * `og:image:alt` for brand/social-card.png. Describes the picture, which is * not brand voice — see src/data/section.ts on alt text. */export const socialCardAlt = "The did.bot wordmark, spelled out in lit cells on a lattice of green and black.";
/** * A description tag is one line: newlines and runs of spaces in the source * copy collapse, so a beat written to break across a page does not arrive * at an unfurler in pieces. */export function oneLine(text: string): string { return text.replace(/\s+/g, " ").trim();}
/** * The description tag for a page, from the one line that page already * shows. A page shows its own filler on purpose — that is how a reader, * and the owner, can see what is still unwritten — but a link card is read * somewhere else entirely by somebody who may never open the page, so an * unwritten line falls back to `siteDescription` rather than travelling. * This is the one place a card and its page are allowed to differ, and only * until the line is written. */export function describe(line?: string): string { return oneLine(line && !isFiller(line) ? line : siteDescription);}