faf-cli 8.2.0 → 8.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -80,9 +80,9 @@
80
80
  "/** About is a repo role, not an app_type.\n *\n * Signal: the `about:` block with `represents: owner/repo`.\n * Score is inherited (`about.source_score`) or unknown (−1 / —).\n */\n\nexport const REPRESENTS_RE = /^[A-Za-z0-9_.-]+\\/[A-Za-z0-9_.-]+$/;\n\nexport interface AboutDecl {\n represents: string;\n sourceScore: number; // −1 when missing or out of range\n}\n\n/** Parsed .faf object: About iff about.represents is a non-empty string. */\nexport function isAboutFaf(data: { about?: { represents?: unknown } } | null | undefined): boolean {\n const r = data?.about?.represents;\n return typeof r === 'string' && r.length > 0;\n}\n\n/**\n * Hot-path YAML detect — no parser.\n * About = an `about:` map that contains `represents:`.\n * `app_type: about` is not a type and does not trigger this.\n */\nexport function aboutFromYaml(yaml: string): AboutDecl | null {\n const block = yaml.match(/^about:\\s*\\n((?:[ \\t]+.*\\n?)*)/m);\n if (!block) {return null;}\n const body = block[1] ?? '';\n const representsMatch = body.match(/^[ \\t]+represents:\\s*(\\S+)\\s*$/m);\n if (!representsMatch) {return null;}\n const represents = representsMatch[1];\n const scoreMatch = body.match(/^[ \\t]+source_score:\\s*(\\d+)\\s*$/m);\n let sourceScore = -1;\n if (scoreMatch) {\n const n = parseInt(scoreMatch[1], 10);\n if (n >= 0 && n <= 100) {sourceScore = n;}\n }\n return { represents, sourceScore };\n}\n",
81
81
  "import type { KernelScoreResult, ScoreResult } from './types.js';\nimport { getTier, TIERS } from './tiers.js';\nimport * as kernel from '../wasm/kernel.js';\nimport { aboutFromYaml } from './about.js';\n\n/** A score as text for display: `85%`, or `unknown (—)` when the result says\n * the score is not known (`unknown: true` — an About Repo with no\n * source_score). Never `-1%`. */\nexport function scoreText(result: Pick<ScoreResult, 'score' | 'unknown'>): string {\n return result.unknown ? 'unknown (—)' : `${result.score}%`;\n}\n\n/** Convert kernel result into enriched ScoreResult */\nexport function enrichScore(kernel: KernelScoreResult): ScoreResult {\n return {\n score: kernel.score,\n tier: getTier(kernel.score),\n populated: kernel.populated,\n empty: kernel.empty,\n ignored: kernel.ignored,\n active: kernel.active,\n total: kernel.total,\n slots: kernel.slots,\n };\n}\n\n/**\n * Score a .faf YAML string with About-Repo short-circuit.\n *\n * About is a repo role, not an app_type. The signal is the `about:` block\n * (`about.represents`). The scorer reads `about.source_score` and emits\n * that directly — no slot scoring, no kernel call.\n *\n * Optional: `about.source_score: <number>` — without it the score is not\n * known: the result carries `unknown: true` (with score -1 and a White tier\n * as placeholders). Render that as \"unknown\" (—), never as \"-1/100\" or \"-1%\".\n *\n * Doctrine: memory/private-source-public-about-pattern.md.\n *\n * For apps: delegates to kernel.score() + enrichScore().\n */\nexport function scoreFafYaml(yaml: string): ScoreResult {\n const about = aboutFromYaml(yaml);\n if (about) {\n const score = about.sourceScore;\n return {\n score,\n tier: score >= 0 ? getTier(score) : TIERS[TIERS.length - 1],\n populated: 0,\n empty: 0,\n ignored: 0,\n active: 0,\n total: 0,\n slots: {},\n inherited: true,\n represents: about.represents,\n ...(score < 0 ? { unknown: true } : {}),\n };\n }\n\n return enrichScore(kernel.score(yaml));\n}\n",
82
82
  "import type { FafData } from './types.js';\nimport { REPRESENTS_RE, isAboutFaf } from './about.js';\n\n/** Validate a parsed .faf object */\nexport function validateFaf(data: unknown): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push('File is not a valid YAML mapping');\n return { valid: false, errors };\n }\n\n const faf = data as FafData;\n\n if (!faf.faf_version) {\n errors.push('Missing required field: faf_version');\n }\n\n if (!faf.project?.name) {\n errors.push('Missing required field: project.name');\n }\n\n // about is a repo role, not an app_type.\n if (faf.app_type === 'about') {\n errors.push(\"about is not an app_type — declare about.represents (owner/repo) instead\");\n }\n\n // About Repo: the about: block is the signal. represents is required.\n if (faf.about !== undefined) {\n if (!isAboutFaf(faf) || typeof faf.about.represents !== 'string') {\n errors.push('about.represents is required (owner/repo of the source codebase)');\n } else if (!REPRESENTS_RE.test(faf.about.represents)) {\n errors.push(`about.represents must be \"owner/repo\" format (got: ${faf.about.represents})`);\n }\n if (faf.about.source_score !== undefined) {\n const s = faf.about.source_score;\n if (typeof s !== 'number' || s < 0 || s > 100) {\n errors.push(`about.source_score must be a number 0-100 (got: ${s})`);\n }\n }\n }\n\n return { valid: errors.length === 0, errors };\n}\n",
83
- "import { lstatSync } from 'fs';\nimport { join, dirname, basename, resolve } from 'path';\nimport { execFileSync } from 'child_process';\nimport { YAMLParseError, isMap, isScalar, parse, stringify, type Document } from 'yaml';\nimport type { FafData } from '../core/types.js';\nimport { asFafMapping, describeShape } from '../core/shape.js';\nimport { isPlaceholder } from '../core/slots.js';\nimport { SafePathError, readBytesIfPresent, readUtf8, resolveInside, safeWriteFile } from '../core/safe-write.js';\nimport { editYaml, keptAliases, mergeData, restoreAliases, restoreAnchors, type KeptAlias } from '../core/yaml-edit.js';\nimport { fafSourceOf, isFill, setFafSource, type FafSource } from '../core/faf-source.js';\n\n/** The real path to read for the .faf at `path`. A link must stay inside the\n * folder the .faf sits in and end at a .faf/.fafm file — `project.faf →\n * ~/.aws/credentials` or `project.faf → .env` throws a SafePathError, and\n * nothing is read. */\nfunction fafToRead(path: string): string {\n const full = resolve(path);\n return resolveInside(dirname(full), full, { read: true });\n}\n\n/** yaml's YAMLParseError behind `e` (thrown by yaml, or the cause of\n * parseForEdit's refusal), or null. */\nfunction yamlParseError(e: unknown): YAMLParseError | null {\n if (e instanceof YAMLParseError) {return e;}\n const cause = (e as { cause?: unknown } | null)?.cause;\n return cause instanceof YAMLParseError ? cause : null;\n}\n\n/** A .faf that is not valid YAML, as one line (SafePathError `not-yaml`):\n * \"<file> is not valid YAML (<reason>, line N) — faf left it unchanged\". */\nfunction notValidYaml(path: string, err: YAMLParseError): SafePathError {\n const reason = err.message.split('\\n')[0].replace(/ at line \\d+, column \\d+:?\\s*$/, '').replace(/:\\s*$/, '');\n const line = err.linePos?.[0]?.line;\n const full = resolve(path);\n return new SafePathError('not-yaml', full, `${full} is not valid YAML (${reason}${line === undefined ? '' : `, line ${line}`}) — faf left it unchanged`, { cause: err });\n}\n\n/** Run `call` — a call into faf's scoring kernel with the text of the .faf\n * at `path` (or the bytes of the .fafb there) — and turn a rejection by the\n * kernel into the one-line refusal. The kernel throws a bare string (or an\n * Error) for text it cannot read, some of which yaml reads (a 30-digit\n * integer, nesting past the kernel's depth limit); that becomes a\n * SafePathError (`not-yaml`): \"<file>: faf's scoring kernel could not read\n * it (<reason>) — faf left it unchanged\". A SafePathError from `call` passes\n * through as it is. Every command that hands project.faf (or a .fafb) to\n * the kernel calls it through here, after it has read the file as a .faf\n * ({@link readFaf}, or {@link readFafFromString} with the path); one that\n * edits project.faf (`faf auto`, `faf go`, `faf sync --direction pull`)\n * asks the kernel before it writes, so the line is true. `faf diff` and\n * `faf log` score a version the kernel cannot read as 0 instead. */\nexport function withKernel<T>(path: string, call: () => T): T {\n try {\n return call();\n } catch (e) {\n if (e instanceof SafePathError) {throw e;}\n const why = (e instanceof Error ? e.message : String(e)).split('\\n')[0].trim();\n const full = resolve(path);\n throw new SafePathError('not-yaml', full, `${full}: faf's scoring kernel could not read it (${why}) — faf left it unchanged`, { cause: e });\n }\n}\n\n/** Read and parse a .faf file. Always a mapping: an empty file reads as `{}`;\n * a file that parses to a scalar or a list throws a SafePathError\n * (`not-yaml`, one line) instead of handing callers a value they would\n * spread into character keys. A file\n * that is not valid YAML throws a SafePathError (`not-yaml`): \"<file> is not\n * valid YAML (<reason>, line N) — faf left it unchanged\". A link that\n * leaves the folder, or does not end at a .faf/.fafm file, is refused, and so\n * is a file that is not UTF-8. The data remembers the text it was read from:\n * writeFaf refuses to write it back over a file that changed since. */\nexport function readFaf(path: string): FafData {\n const real = fafToRead(path);\n const text = readUtf8(real);\n let parsed: unknown;\n try {\n parsed = parse(text);\n } catch (e) {\n const yamlError = yamlParseError(e);\n if (yamlError) {throw notValidYaml(path, yamlError);}\n throw e;\n }\n const data = asFafMapping(parsed, path) as FafData;\n setFafSource(data, { real, text });\n return data;\n}\n\n/** Serialize .faf data to YAML text — the exact bytes writeFaf writes for a\n * new file (an existing file is updated in place instead).\n *\n * If `data._meta.found` is present, it's stripped before serialization and\n * rendered as a `# found: <list>` YAML comment next to the `type:` field —\n * Glass Hood doctrine: the user sees WHY the cli classified the project as\n * it did. `_meta` is a runtime hint, never a serialized .faf field. Used by\n * writeFaf and by `faf git --stdout`. */\nexport function serializeFaf(data: FafData): string {\n const meta = (data as FafData & { _meta?: { found?: string[] } })._meta;\n // Strip _meta before serialization — it's never part of the .faf schema.\n const cleanData: FafData = { ...data };\n delete (cleanData as Record<string, unknown>)._meta;\n\n let text = stringify(cleanData, { lineWidth: 0 });\n\n // Inject `# found: ...` next to `type:` if rationale was provided.\n if (meta?.found && meta.found.length > 0) {\n const comment = meta.found.join(' + ');\n // Match ` type: <value>` — only inject if there isn't already a comment.\n text = text.replace(\n /^(\\s+type:\\s+\\S+)(\\s*)$/m,\n (match, prefix: string, trailing: string) => {\n if (trailing.includes('#')) {return match;}\n return `${prefix} # found: ${comment}`;\n },\n );\n }\n\n return text;\n}\n\n/** What {@link updateFafFile} did. */\nexport interface UpdateFafResult {\n /** True when the file changed on disk; false when the change was a no-op and\n * nothing was written. */\n written: boolean;\n /** The file's text after the update (its original text when nothing changed). */\n text: string;\n /** Aliases the change would have replaced, left as written: `path` is where\n * (`stack`), `alias` what the file says there (`*base`). faf never replaces\n * or expands an alias; the change at that path is not written. */\n keptAliases?: KeptAlias[];\n}\n\nexport type { KeptAlias };\n\n/**\n * Update an existing .faf in place, keeping every byte the change does not\n * touch. The file is parsed with yaml's `parseDocument`; `mutate` changes the\n * Document through its node APIs (`doc.setIn(['stack', 'database'], 'Postgres')`,\n * `doc.deleteIn([...])`, `doc.getIn([...], true)`); only the text of the nodes\n * that changed is rewritten. Comments, blank lines, key order, quoting, scalar\n * source text (`version: 1.10`, `0x1F90`, a 20-digit integer), anchors, unknown\n * keys (a user's own `_meta` included), CRLF, a BOM and the `%YAML` / `---` /\n * `...` framing survive — nothing folds at 80 columns. When the change leaves\n * the data as it was, nothing is written (`written: false`), even if faf's own\n * layout of the file would differ.\n *\n * An alias the change replaces (`doc.set('stack', …)` over `stack: *base`)\n * is put back: faf never replaces or expands an alias, so that path stays as\n * written and is listed in `keptAliases`; the rest of the change is written.\n *\n * The file must exist. The same link rules as {@link readFaf} (a link must\n * stay in the folder and end at a .faf/.fafm file) and the atomic write of\n * `safeWriteFile` apply; the write itself goes only through a link to a file\n * of the same name. A file that is not valid YAML (SafePathError `not-yaml`,\n * one line), or not UTF-8, is refused (nothing written); so is a file that\n * parses to a scalar or a list — the same `not-yaml` refusal readFaf gives,\n * before `mutate` is called — anything `mutate` throws, and a file that\n * changed on disk while faf was writing.\n */\nexport function updateFafFile(path: string, mutate: (doc: Document) => void): UpdateFafResult {\n return updateFaf(path, mutate, undefined);\n}\n\n/** updateFafFile, checked against `base` — the read the caller's data came\n * from — when it is a read of this same file. `after` runs on the changed\n * Document once its aliases are back (with the file's data before the\n * change), and may list more of them. `keepAnchors` (a fill): a node with an\n * anchor that an alias reads is put back as written too. */\nfunction updateFaf(\n path: string,\n mutate: (doc: Document) => void,\n base: FafSource | undefined,\n after?: (doc: Document, before: unknown) => KeptAlias[],\n keepAnchors = false,\n): UpdateFafResult {\n const real = fafToRead(path);\n const text = readUtf8(real);\n let kept: KeptAlias[] = [];\n let result: ReturnType<typeof editYaml>;\n try {\n result = editYaml(text, doc => {\n // A scalar or a list is refused before `mutate` sees it.\n refuseNotMapping(doc, path);\n const before = doc.clone();\n mutate(doc);\n kept = restoreAliases(before, doc);\n if (keepAnchors) {kept = [...kept, ...restoreAnchors(before, doc)];}\n if (after) {kept = [...kept, ...after(doc, before.toJS()).filter(k => !kept.some(x => x.path === k.path))];}\n }, path);\n } catch (e) {\n const yamlError = yamlParseError(e);\n if (yamlError) {throw notValidYaml(path, yamlError);}\n throw e;\n }\n if (!result.changed) {return { written: false, text, keptAliases: kept };}\n // The file must still be what the caller's data was read from (else a stale\n // read would write over a newer edit), and what faf read here.\n safeWriteFile(path, result.text, { expect: base && base.real === real ? base.text : text });\n return { written: true, text: result.text, keptAliases: kept };\n}\n\n/** Options for {@link writeFaf}. */\nexport interface WriteFafOptions {\n /** Write a fresh file from `data` even when one exists — the explicit\n * overwrite (`faf init --force`, `faf git --force`). Default: an existing\n * file is updated in place with {@link updateFafFile}. */\n replace?: boolean;\n /** Called for each alias of an existing file that `data` would change\n * (`stack: *base` while `data.stack` has more keys): faf leaves it as\n * written — it never replaces or expands an alias — and that path is not\n * written. For a fill (data from updateExistingFaf) it is also called for\n * each node with an anchor an alias reads that the fill would change\n * (`kind: 'anchor'`). `faf auto` prints one line for each. */\n onAliasKept?: (kept: KeptAlias) => void;\n}\n\n/** The one line faf prints for an alias (or an anchor an alias reads) it left as written. */\nexport function aliasKeptNote(kept: KeptAlias): string {\n if (kept.kind === 'anchor') {return `${kept.path} holds an anchor (${kept.alias}) that an alias reads — faf left it as written`;}\n return `${kept.path} is an alias (${kept.alias}) — faf left it as written`;\n}\n\n/** True when something is already at `path` (a file or a link). */\nfunction exists(path: string): boolean {\n try {\n lstatSync(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/** `project.type` as the file has it, before a write. */\nfunction projectType(doc: Document): unknown {\n const node = doc.getIn(['project', 'type'], true);\n return isScalar(node) ? node.value : node;\n}\n\n/** A .faf Document whose root is a scalar or a list is refused — the same\n * SafePathError (`not-yaml`) {@link readFaf} throws: \"<file>: a .faf must be\n * a YAML mapping (key: value pairs), but this one is a string (\"…\"). faf left\n * it unchanged — fix it by hand.\" An empty document passes. */\nfunction refuseNotMapping(doc: Document, path: string): void {\n const root = doc.contents;\n if (root !== null && root !== undefined && !isMap(root)) {\n throw new SafePathError('not-yaml', resolve(path), `${path}: a .faf must be a YAML mapping (key: value pairs), but this one is ${describeShape(doc.toJS())}. faf left it unchanged — fix it by hand.`);\n }\n}\n\n/** Make the .faf Document hold `data`, changing only what `data` changes:\n * the file's own data is read first and only the paths where `data` differs\n * from it are written ({@link mergeData}) — a value `data` merely repeats\n * (the text an alias read as, say) is never written over the node the file\n * has. faf's runtime `_meta` (detection rationale) is never written: a\n * `_meta` in `data` is faf's own unless the file already carries a `_meta`\n * key — then it is the user's, kept like any other key. The `# found:`\n * rationale is written only next to a `type:` this write fills; a type\n * already in the file is left exactly as it is. */\nfunction applyFafData(doc: Document, data: FafData, path: string): void {\n refuseNotMapping(doc, path);\n const root = doc.contents;\n const fileHasMeta = isMap(root) && root.items.some(p => isScalar(p.key) && p.key.value === '_meta');\n const { _meta: meta, ...rest } = data as FafData & { _meta?: { found?: string[] } };\n const typeBefore = projectType(doc);\n const before: unknown = isMap(root) ? doc.toJS() : {};\n const map = isMap(root) ? root : doc.createNode({});\n doc.contents = map;\n mergeData(doc, map, before, fileHasMeta ? { ...data } : rest);\n if (!fileHasMeta) {addFoundRationale(doc, meta?.found, typeBefore);}\n}\n\n/** `data` as applyFafData writes it: faf's runtime `_meta` left out unless\n * the file has a `_meta` of its own. */\nfunction withoutRuntimeMeta(doc: Document, data: FafData): unknown {\n const root = doc.contents;\n if (isMap(root) && root.items.some(p => isScalar(p.key) && p.key.value === '_meta')) {return data;}\n const { _meta: _ignored, ...rest } = data as FafData & { _meta?: unknown };\n return rest;\n}\n\n/** `# found: …` next to `project.type` — only when this write filled it. */\nfunction addFoundRationale(doc: Document, found: string[] | undefined, typeBefore: unknown): void {\n if (!found || found.length === 0 || !isPlaceholder(typeBefore)) {return;}\n const node = doc.getIn(['project', 'type'], true);\n if (isScalar(node) && !isPlaceholder(node.value) && (node.comment === null || node.comment === undefined)) {\n node.comment = ` found: ${found.join(' + ')}`;\n }\n}\n\n/** Write a .faf file from data — atomically (temp file, fsync, rename; a\n * failure leaves the original as it was), and never through a link that\n * leaves the folder or dangles (SafePathError). An in-project link is written\n * through and stays a link.\n *\n * An existing file is updated in place ({@link updateFafFile}): `data` is\n * compared with what the file holds, and only the values that changed are\n * rewritten — so comments, formatting, source text and key order survive, a\n * value `data` merely repeats (the text an alias `*g` read as, say) never\n * replaces the node the file has, and a write that changes nothing writes\n * nothing. A key the file has and `data` leaves out is kept (faf removes\n * nothing it did not write). Pass `{ replace: true }` to overwrite the file\n * with a fresh render instead. Returns false when nothing was written.\n *\n * An alias in the file (`stack: *base`) is never replaced or expanded: it\n * stays as written, and a change `data` makes under it is not written —\n * `opts.onAliasKept` hears of each such path. When `data` is a fill (from\n * updateExistingFaf), a node with an anchor that an alias reads is left as\n * written as well (filling it would change every alias), and reported the\n * same way with `kind: 'anchor'`.\n *\n * When `data` came from readFaf of this file (directly, or through\n * updateExistingFaf), the write is refused if the file changed on disk since\n * that read (SafePathError `changed`: \"not written; original kept\"), so an\n * edit made meanwhile is never written over. A new file is not written over\n * one that appeared meanwhile. */\nexport function writeFaf(path: string, data: FafData, opts: WriteFafOptions = {}): boolean {\n if (!opts.replace && exists(path)) {\n const result = updateFaf(path, doc => applyFafData(doc, data, path), fafSourceOf(data), (doc, before) => keptAliases(doc, withoutRuntimeMeta(doc, data), before), isFill(data));\n setFafSource(data, { real: fafToRead(path), text: result.text });\n for (const kept of result.keptAliases ?? []) {opts.onAliasKept?.(kept);}\n return result.written;\n }\n const full = resolve(path);\n const text = serializeFaf(data);\n const expect = exists(path) ? readBytesIfPresent(resolveInside(dirname(full), full)) : null;\n const real = safeWriteFile(path, text, { expect });\n setFafSource(data, { real, text });\n return true;\n}\n\n/** Read raw YAML text from a .faf file (the same link rules as readFaf; a\n * file that is not UTF-8 is refused). */\nexport function readFafRaw(path: string): string {\n return readUtf8(fafToRead(path));\n}\n\n/** Parse .faf data from a YAML string — e.g. the output of `git show <ref>:project.faf`.\n * The readers above are path-only; `faf diff` needs to parse a version that\n * lives in git history, never on disk. With `path` (the file the text was\n * read from) the text is read as {@link readFaf} reads a file: text that is\n * not valid YAML throws a SafePathError (`not-yaml`) naming it, and so does\n * text that parses to a scalar or a list (faf's shape check,\n * `asFafMapping`); empty text reads as `{}`. Without `path`, the parsed\n * value as it is, or yaml's own error. */\nexport function readFafFromString(text: string, path?: string): FafData {\n let parsed: unknown;\n try {\n parsed = parse(text);\n } catch (e) {\n const yamlError = yamlParseError(e);\n if (path !== undefined && yamlError) {throw notValidYaml(path, yamlError);}\n throw e;\n }\n return (path === undefined ? parsed : asFafMapping(parsed, path)) as FafData;\n}\n\n/** True when `full` is a .faf faf may read: a regular file, or a link that\n * stays inside `folder` and ends at a .faf/.fafm file. Nothing there, or a\n * folder that happens to be named `.faf`, is not a candidate. A link that\n * leaves `folder`, dangles or ends anywhere else throws a SafePathError —\n * refused out loud, never skipped (skipping would let `faf init` create a\n * file through it). */\nfunction isFafCandidate(folder: string, full: string): boolean {\n let st;\n try {\n st = lstatSync(full);\n } catch {\n return false;\n }\n if (!st.isSymbolicLink() && !st.isFile()) {return false;}\n resolveInside(folder, resolve(full), { read: true });\n return true;\n}\n\n/** Find the .faf file in a directory (walks up one level). The path is\n * returned as spelled; a symlinked candidate must pass the readFaf link rules\n * or this throws a SafePathError. */\nexport function findFafFile(dir: string = process.cwd()): string | null {\n const candidates = ['project.faf', '.faf'];\n // Use path.join for cross-platform separator handling — earlier\n // template-literal `${dir}/${name}` produced forward-slash paths\n // even on Windows, breaking strict path equality and any consumer\n // that path-compared the result.\n for (const name of candidates) {\n const full = join(dir, name);\n if (isFafCandidate(dir, full)) {return full;}\n }\n // Walk up one level — use path.dirname for cross-platform parent\n // resolution. The earlier regex `dir.replace(/\\/[^/]+$/, '')`\n // only matched POSIX separators and silently no-op'd on Windows.\n const parent = dirname(dir);\n if (parent !== dir) {\n for (const name of candidates) {\n const full = join(parent, name);\n if (isFafCandidate(parent, full)) {return full;}\n }\n }\n return null;\n}\n\n/** Repo-root-relative path of a .faf, computed BY git — runtime- and OS-independent.\n * Replaces `path.relative(top, fafPath)`, which breaks on Windows when git's\n * long-form `--show-toplevel` and an 8.3 short-name cwd (e.g. `RUNNER~1`) disagree.\n * git resolves both representations internally and emits forward slashes; works for\n * tracked AND untracked .faf (it's the cwd's location under the root, not file status).\n * Caller must already be inside a git repo. */\nexport function gitRepoRel(fafPath: string, cwd: string = process.cwd()): string {\n const prefix = execFileSync('git', ['-C', dirname(fafPath), 'rev-parse', '--show-prefix'], {\n cwd,\n encoding: 'utf-8',\n }).trim(); // '' at repo root, or 'sub/dir/' (trailing slash)\n return prefix + basename(fafPath);\n}\n",
83
+ "import { lstatSync } from 'fs';\nimport { join, dirname, basename, resolve } from 'path';\nimport { execFileSync } from 'child_process';\nimport { YAMLParseError, isMap, isScalar, parse, stringify, type Document } from 'yaml';\nimport type { FafData } from '../core/types.js';\nimport { asFafMapping, describeShape } from '../core/shape.js';\nimport { isPlaceholder } from '../core/slots.js';\nimport { SafePathError, readBytesIfPresent, readUtf8, resolveInside, safeWriteFile } from '../core/safe-write.js';\nimport { editYaml, keptAliases, mergeData, restoreAliases, restoreAnchors, type KeptAlias } from '../core/yaml-edit.js';\nimport { fafSourceOf, isFill, setFafSource, type FafSource } from '../core/faf-source.js';\n\n/** The real path to read for the .faf at `path`. A link must stay inside the\n * folder the .faf sits in and end at a .faf/.fafm file — `project.faf →\n * ~/.aws/credentials` or `project.faf → .env` throws a SafePathError, and\n * nothing is read. */\nfunction fafToRead(path: string): string {\n const full = resolve(path);\n return resolveInside(dirname(full), full, { read: true });\n}\n\n/** yaml's YAMLParseError behind `e` (thrown by yaml, or the cause of\n * parseForEdit's refusal), or null. */\nfunction yamlParseError(e: unknown): YAMLParseError | null {\n if (e instanceof YAMLParseError) {return e;}\n const cause = (e as { cause?: unknown } | null)?.cause;\n return cause instanceof YAMLParseError ? cause : null;\n}\n\n/** A .faf that is not valid YAML, as one line (SafePathError `not-yaml`):\n * \"<file> is not valid YAML (<reason>, line N) — faf left it unchanged\". */\nfunction notValidYaml(path: string, err: YAMLParseError): SafePathError {\n const reason = err.message.split('\\n')[0].replace(/ at line \\d+, column \\d+:?\\s*$/, '').replace(/:\\s*$/, '');\n const line = err.linePos?.[0]?.line;\n const full = resolve(path);\n return new SafePathError('not-yaml', full, `${full} is not valid YAML (${reason}${line === undefined ? '' : `, line ${line}`}) — faf left it unchanged`, { cause: err });\n}\n\n/** Run `call` — a call into faf's scoring kernel with the text of the .faf\n * at `path` (or the bytes of the .fafb there) — and turn a rejection by the\n * kernel into the one-line refusal. The kernel throws a bare string (or an\n * Error) for text it cannot read, some of which yaml reads (a 30-digit\n * integer, nesting past the kernel's depth limit); that becomes a\n * SafePathError (`not-yaml`): \"<file>: faf's scoring kernel could not read\n * it (<reason>) — faf left it unchanged\". A SafePathError from `call` passes\n * through as it is. Every command that hands project.faf (or a .fafb) to\n * the kernel calls it through here, after it has read the file as a .faf\n * ({@link readFaf}, or {@link readFafFromString} with the path); one that\n * edits project.faf (`faf auto`, `faf go`)\n * asks the kernel before it writes, so the line is true. `faf diff` and\n * `faf log` score a version the kernel cannot read as 0 instead. */\nexport function withKernel<T>(path: string, call: () => T): T {\n try {\n return call();\n } catch (e) {\n if (e instanceof SafePathError) {throw e;}\n const why = (e instanceof Error ? e.message : String(e)).split('\\n')[0].trim();\n const full = resolve(path);\n throw new SafePathError('not-yaml', full, `${full}: faf's scoring kernel could not read it (${why}) — faf left it unchanged`, { cause: e });\n }\n}\n\n/** Read and parse a .faf file. Always a mapping: an empty file reads as `{}`;\n * a file that parses to a scalar or a list throws a SafePathError\n * (`not-yaml`, one line) instead of handing callers a value they would\n * spread into character keys. A file\n * that is not valid YAML throws a SafePathError (`not-yaml`): \"<file> is not\n * valid YAML (<reason>, line N) — faf left it unchanged\". A link that\n * leaves the folder, or does not end at a .faf/.fafm file, is refused, and so\n * is a file that is not UTF-8. The data remembers the text it was read from:\n * writeFaf refuses to write it back over a file that changed since. */\nexport function readFaf(path: string): FafData {\n const real = fafToRead(path);\n const text = readUtf8(real);\n let parsed: unknown;\n try {\n parsed = parse(text);\n } catch (e) {\n const yamlError = yamlParseError(e);\n if (yamlError) {throw notValidYaml(path, yamlError);}\n throw e;\n }\n const data = asFafMapping(parsed, path) as FafData;\n setFafSource(data, { real, text });\n return data;\n}\n\n/** Serialize .faf data to YAML text — the exact bytes writeFaf writes for a\n * new file (an existing file is updated in place instead).\n *\n * If `data._meta.found` is present, it's stripped before serialization and\n * rendered as a `# found: <list>` YAML comment next to the `type:` field —\n * Glass Hood doctrine: the user sees WHY the cli classified the project as\n * it did. `_meta` is a runtime hint, never a serialized .faf field. Used by\n * writeFaf and by `faf git --stdout`. */\nexport function serializeFaf(data: FafData): string {\n const meta = (data as FafData & { _meta?: { found?: string[] } })._meta;\n // Strip _meta before serialization — it's never part of the .faf schema.\n const cleanData: FafData = { ...data };\n delete (cleanData as Record<string, unknown>)._meta;\n\n let text = stringify(cleanData, { lineWidth: 0 });\n\n // Inject `# found: ...` next to `type:` if rationale was provided.\n if (meta?.found && meta.found.length > 0) {\n const comment = meta.found.join(' + ');\n // Match ` type: <value>` — only inject if there isn't already a comment.\n text = text.replace(\n /^(\\s+type:\\s+\\S+)(\\s*)$/m,\n (match, prefix: string, trailing: string) => {\n if (trailing.includes('#')) {return match;}\n return `${prefix} # found: ${comment}`;\n },\n );\n }\n\n return text;\n}\n\n/** What {@link updateFafFile} did. */\nexport interface UpdateFafResult {\n /** True when the file changed on disk; false when the change was a no-op and\n * nothing was written. */\n written: boolean;\n /** The file's text after the update (its original text when nothing changed). */\n text: string;\n /** Aliases the change would have replaced, left as written: `path` is where\n * (`stack`), `alias` what the file says there (`*base`). faf never replaces\n * or expands an alias; the change at that path is not written. */\n keptAliases?: KeptAlias[];\n}\n\nexport type { KeptAlias };\n\n/**\n * Update an existing .faf in place, keeping every byte the change does not\n * touch. The file is parsed with yaml's `parseDocument`; `mutate` changes the\n * Document through its node APIs (`doc.setIn(['stack', 'database'], 'Postgres')`,\n * `doc.deleteIn([...])`, `doc.getIn([...], true)`); only the text of the nodes\n * that changed is rewritten. Comments, blank lines, key order, quoting, scalar\n * source text (`version: 1.10`, `0x1F90`, a 20-digit integer), anchors, unknown\n * keys (a user's own `_meta` included), CRLF, a BOM and the `%YAML` / `---` /\n * `...` framing survive — nothing folds at 80 columns. When the change leaves\n * the data as it was, nothing is written (`written: false`), even if faf's own\n * layout of the file would differ.\n *\n * An alias the change replaces (`doc.set('stack', …)` over `stack: *base`)\n * is put back: faf never replaces or expands an alias, so that path stays as\n * written and is listed in `keptAliases`; the rest of the change is written.\n *\n * The file must exist. The same link rules as {@link readFaf} (a link must\n * stay in the folder and end at a .faf/.fafm file) and the atomic write of\n * `safeWriteFile` apply; the write itself goes only through a link to a file\n * of the same name. A file that is not valid YAML (SafePathError `not-yaml`,\n * one line), or not UTF-8, is refused (nothing written); so is a file that\n * parses to a scalar or a list — the same `not-yaml` refusal readFaf gives,\n * before `mutate` is called — anything `mutate` throws, and a file that\n * changed on disk while faf was writing.\n */\nexport function updateFafFile(path: string, mutate: (doc: Document) => void): UpdateFafResult {\n return updateFaf(path, mutate, undefined);\n}\n\n/** updateFafFile, checked against `base` — the read the caller's data came\n * from — when it is a read of this same file. `after` runs on the changed\n * Document once its aliases are back (with the file's data before the\n * change), and may list more of them. `keepAnchors` (a fill): a node with an\n * anchor that an alias reads is put back as written too. */\nfunction updateFaf(\n path: string,\n mutate: (doc: Document) => void,\n base: FafSource | undefined,\n after?: (doc: Document, before: unknown) => KeptAlias[],\n keepAnchors = false,\n): UpdateFafResult {\n const real = fafToRead(path);\n const text = readUtf8(real);\n let kept: KeptAlias[] = [];\n let result: ReturnType<typeof editYaml>;\n try {\n result = editYaml(text, doc => {\n // A scalar or a list is refused before `mutate` sees it.\n refuseNotMapping(doc, path);\n const before = doc.clone();\n mutate(doc);\n kept = restoreAliases(before, doc);\n if (keepAnchors) {kept = [...kept, ...restoreAnchors(before, doc)];}\n if (after) {kept = [...kept, ...after(doc, before.toJS()).filter(k => !kept.some(x => x.path === k.path))];}\n }, path);\n } catch (e) {\n const yamlError = yamlParseError(e);\n if (yamlError) {throw notValidYaml(path, yamlError);}\n throw e;\n }\n if (!result.changed) {return { written: false, text, keptAliases: kept };}\n // The file must still be what the caller's data was read from (else a stale\n // read would write over a newer edit), and what faf read here.\n safeWriteFile(path, result.text, { expect: base && base.real === real ? base.text : text });\n return { written: true, text: result.text, keptAliases: kept };\n}\n\n/** Options for {@link writeFaf}. */\nexport interface WriteFafOptions {\n /** Write a fresh file from `data` even when one exists — the explicit\n * overwrite (`faf init --force`, `faf git --force`). Default: an existing\n * file is updated in place with {@link updateFafFile}. */\n replace?: boolean;\n /** Called for each alias of an existing file that `data` would change\n * (`stack: *base` while `data.stack` has more keys): faf leaves it as\n * written — it never replaces or expands an alias — and that path is not\n * written. For a fill (data from updateExistingFaf) it is also called for\n * each node with an anchor an alias reads that the fill would change\n * (`kind: 'anchor'`). `faf auto` prints one line for each. */\n onAliasKept?: (kept: KeptAlias) => void;\n}\n\n/** The one line faf prints for an alias (or an anchor an alias reads) it left as written. */\nexport function aliasKeptNote(kept: KeptAlias): string {\n if (kept.kind === 'anchor') {return `${kept.path} holds an anchor (${kept.alias}) that an alias reads — faf left it as written`;}\n return `${kept.path} is an alias (${kept.alias}) — faf left it as written`;\n}\n\n/** True when something is already at `path` (a file or a link). */\nfunction exists(path: string): boolean {\n try {\n lstatSync(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/** `project.type` as the file has it, before a write. */\nfunction projectType(doc: Document): unknown {\n const node = doc.getIn(['project', 'type'], true);\n return isScalar(node) ? node.value : node;\n}\n\n/** A .faf Document whose root is a scalar or a list is refused — the same\n * SafePathError (`not-yaml`) {@link readFaf} throws: \"<file>: a .faf must be\n * a YAML mapping (key: value pairs), but this one is a string (\"…\"). faf left\n * it unchanged — fix it by hand.\" An empty document passes. */\nfunction refuseNotMapping(doc: Document, path: string): void {\n const root = doc.contents;\n if (root !== null && root !== undefined && !isMap(root)) {\n throw new SafePathError('not-yaml', resolve(path), `${path}: a .faf must be a YAML mapping (key: value pairs), but this one is ${describeShape(doc.toJS())}. faf left it unchanged — fix it by hand.`);\n }\n}\n\n/** Make the .faf Document hold `data`, changing only what `data` changes:\n * the file's own data is read first and only the paths where `data` differs\n * from it are written ({@link mergeData}) — a value `data` merely repeats\n * (the text an alias read as, say) is never written over the node the file\n * has. faf's runtime `_meta` (detection rationale) is never written: a\n * `_meta` in `data` is faf's own unless the file already carries a `_meta`\n * key — then it is the user's, kept like any other key. The `# found:`\n * rationale is written only next to a `type:` this write fills; a type\n * already in the file is left exactly as it is. */\nfunction applyFafData(doc: Document, data: FafData, path: string): void {\n refuseNotMapping(doc, path);\n const root = doc.contents;\n const fileHasMeta = isMap(root) && root.items.some(p => isScalar(p.key) && p.key.value === '_meta');\n const { _meta: meta, ...rest } = data as FafData & { _meta?: { found?: string[] } };\n const typeBefore = projectType(doc);\n const before: unknown = isMap(root) ? doc.toJS() : {};\n const map = isMap(root) ? root : doc.createNode({});\n doc.contents = map;\n mergeData(doc, map, before, fileHasMeta ? { ...data } : rest);\n if (!fileHasMeta) {addFoundRationale(doc, meta?.found, typeBefore);}\n}\n\n/** `data` as applyFafData writes it: faf's runtime `_meta` left out unless\n * the file has a `_meta` of its own. */\nfunction withoutRuntimeMeta(doc: Document, data: FafData): unknown {\n const root = doc.contents;\n if (isMap(root) && root.items.some(p => isScalar(p.key) && p.key.value === '_meta')) {return data;}\n const { _meta: _ignored, ...rest } = data as FafData & { _meta?: unknown };\n return rest;\n}\n\n/** `# found: …` next to `project.type` — only when this write filled it. */\nfunction addFoundRationale(doc: Document, found: string[] | undefined, typeBefore: unknown): void {\n if (!found || found.length === 0 || !isPlaceholder(typeBefore)) {return;}\n const node = doc.getIn(['project', 'type'], true);\n if (isScalar(node) && !isPlaceholder(node.value) && (node.comment === null || node.comment === undefined)) {\n node.comment = ` found: ${found.join(' + ')}`;\n }\n}\n\n/** Write a .faf file from data — atomically (temp file, fsync, rename; a\n * failure leaves the original as it was), and never through a link that\n * leaves the folder or dangles (SafePathError). An in-project link is written\n * through and stays a link.\n *\n * An existing file is updated in place ({@link updateFafFile}): `data` is\n * compared with what the file holds, and only the values that changed are\n * rewritten — so comments, formatting, source text and key order survive, a\n * value `data` merely repeats (the text an alias `*g` read as, say) never\n * replaces the node the file has, and a write that changes nothing writes\n * nothing. A key the file has and `data` leaves out is kept (faf removes\n * nothing it did not write). Pass `{ replace: true }` to overwrite the file\n * with a fresh render instead. Returns false when nothing was written.\n *\n * An alias in the file (`stack: *base`) is never replaced or expanded: it\n * stays as written, and a change `data` makes under it is not written —\n * `opts.onAliasKept` hears of each such path. When `data` is a fill (from\n * updateExistingFaf), a node with an anchor that an alias reads is left as\n * written as well (filling it would change every alias), and reported the\n * same way with `kind: 'anchor'`.\n *\n * When `data` came from readFaf of this file (directly, or through\n * updateExistingFaf), the write is refused if the file changed on disk since\n * that read (SafePathError `changed`: \"not written; original kept\"), so an\n * edit made meanwhile is never written over. A new file is not written over\n * one that appeared meanwhile. */\nexport function writeFaf(path: string, data: FafData, opts: WriteFafOptions = {}): boolean {\n if (!opts.replace && exists(path)) {\n const result = updateFaf(path, doc => applyFafData(doc, data, path), fafSourceOf(data), (doc, before) => keptAliases(doc, withoutRuntimeMeta(doc, data), before), isFill(data));\n setFafSource(data, { real: fafToRead(path), text: result.text });\n for (const kept of result.keptAliases ?? []) {opts.onAliasKept?.(kept);}\n return result.written;\n }\n const full = resolve(path);\n const text = serializeFaf(data);\n const expect = exists(path) ? readBytesIfPresent(resolveInside(dirname(full), full)) : null;\n const real = safeWriteFile(path, text, { expect });\n setFafSource(data, { real, text });\n return true;\n}\n\n/** Read raw YAML text from a .faf file (the same link rules as readFaf; a\n * file that is not UTF-8 is refused). */\nexport function readFafRaw(path: string): string {\n return readUtf8(fafToRead(path));\n}\n\n/** Parse .faf data from a YAML string — e.g. the output of `git show <ref>:project.faf`.\n * The readers above are path-only; `faf diff` needs to parse a version that\n * lives in git history, never on disk. With `path` (the file the text was\n * read from) the text is read as {@link readFaf} reads a file: text that is\n * not valid YAML throws a SafePathError (`not-yaml`) naming it, and so does\n * text that parses to a scalar or a list (faf's shape check,\n * `asFafMapping`); empty text reads as `{}`. Without `path`, the parsed\n * value as it is, or yaml's own error. */\nexport function readFafFromString(text: string, path?: string): FafData {\n let parsed: unknown;\n try {\n parsed = parse(text);\n } catch (e) {\n const yamlError = yamlParseError(e);\n if (path !== undefined && yamlError) {throw notValidYaml(path, yamlError);}\n throw e;\n }\n return (path === undefined ? parsed : asFafMapping(parsed, path)) as FafData;\n}\n\n/** True when `full` is a .faf faf may read: a regular file, or a link that\n * stays inside `folder` and ends at a .faf/.fafm file. Nothing there, or a\n * folder that happens to be named `.faf`, is not a candidate. A link that\n * leaves `folder`, dangles or ends anywhere else throws a SafePathError —\n * refused out loud, never skipped (skipping would let `faf init` create a\n * file through it). */\nfunction isFafCandidate(folder: string, full: string): boolean {\n let st;\n try {\n st = lstatSync(full);\n } catch {\n return false;\n }\n if (!st.isSymbolicLink() && !st.isFile()) {return false;}\n resolveInside(folder, resolve(full), { read: true });\n return true;\n}\n\n/** Find the .faf file in a directory (walks up one level). The path is\n * returned as spelled; a symlinked candidate must pass the readFaf link rules\n * or this throws a SafePathError. */\nexport function findFafFile(dir: string = process.cwd()): string | null {\n const candidates = ['project.faf', '.faf'];\n // Use path.join for cross-platform separator handling — earlier\n // template-literal `${dir}/${name}` produced forward-slash paths\n // even on Windows, breaking strict path equality and any consumer\n // that path-compared the result.\n for (const name of candidates) {\n const full = join(dir, name);\n if (isFafCandidate(dir, full)) {return full;}\n }\n // Walk up one level — use path.dirname for cross-platform parent\n // resolution. The earlier regex `dir.replace(/\\/[^/]+$/, '')`\n // only matched POSIX separators and silently no-op'd on Windows.\n const parent = dirname(dir);\n if (parent !== dir) {\n for (const name of candidates) {\n const full = join(parent, name);\n if (isFafCandidate(parent, full)) {return full;}\n }\n }\n return null;\n}\n\n/** Repo-root-relative path of a .faf, computed BY git — runtime- and OS-independent.\n * Replaces `path.relative(top, fafPath)`, which breaks on Windows when git's\n * long-form `--show-toplevel` and an 8.3 short-name cwd (e.g. `RUNNER~1`) disagree.\n * git resolves both representations internally and emits forward slashes; works for\n * tracked AND untracked .faf (it's the cwd's location under the root, not file status).\n * Caller must already be inside a git repo. */\nexport function gitRepoRel(fafPath: string, cwd: string = process.cwd()): string {\n const prefix = execFileSync('git', ['-C', dirname(fafPath), 'rev-parse', '--show-prefix'], {\n cwd,\n encoding: 'utf-8',\n }).trim(); // '' at repo root, or 'sub/dir/' (trailing slash)\n return prefix + basename(fafPath);\n}\n",
84
84
  "'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n",
85
- "/**\n * Safe file access — the one primitive every faf writer, and every read of\n * project context, goes through. It is also the only module in faf that calls\n * a filesystem write, rename, delete, mkdir or chmod API (tests/write-guard\n * enforces that for all of src/).\n *\n * Rule 1 — stay inside the project. Before faf touches a path it resolves it on\n * disk (realpath: every link followed). If that leads outside the project\n * folder, faf refuses. A dangling link is refused — faf never creates a file at\n * the end of a link. Anything whose real path is inside a `.git` folder is\n * refused, always — with two narrow exceptions: faf's own git hook\n * (`allowGitHooks`: one file directly inside the repo's hooks folder), and\n * the repo's own git config file (`allowGitConfig`: the file `config`\n * directly in the folder git names for it), where `faf diff\n * --uninstall-driver` removes the section faf's install wrote.\n *\n * Rule 2 — a link leads to the same kind of file. faf follows a link only to a\n * file with the same name (CLAUDE.md → docs/CLAUDE.md), or from one AI context\n * file to another (CLAUDE.md → AGENTS.md; the set is FAF_CONTEXT_FILES). The\n * link itself survives: faf writes the file it points at. `CLAUDE.md →\n * README.md` or `project.html → package.json` is refused — faf would be\n * writing a file it was never asked to write. A read of project context\n * through a link must land on a .faf or .fafm file instead, so `project.faf →\n * .env` is refused even though .env is in the project — or, for a read of an\n * AI context file, on another AI context file (`faf recover` reads CLAUDE.md →\n * AGENTS.md), the rule the writers use.\n *\n * Rule 3 — never leave a half-written file. A write goes to a temp file in the\n * same folder, is flushed to disk (fsync), then renamed over the original in\n * one step, keeping the original's permissions. If any step fails the temp\n * file is removed and the original is exactly as it was: \"not written;\n * original kept\". A plain writeFileSync truncates first, so a full disk, a\n * quota or a killed process used to leave the user's file cut short. With\n * `expect` (the bytes the caller read), the file is read again just before the\n * rename and the write is refused if it changed in the meantime. Its mode is\n * checked too: a file made read-only, or given other permissions, while faf\n * was writing is not replaced.\n *\n * Rule 4 — text faf edits is UTF-8. readUtf8 decodes strictly: a UTF-16 file or\n * any bytes that are not UTF-8 are refused, never turned into U+FFFD and\n * written back.\n *\n * Rule 5 — a whole file faf renders replaces a file already there only when\n * faf can prove it wrote it: project.html, the cards, `faf server-card --out`,\n * a `faf taf --output` snapshot and a `faf decompile --output` file must be\n * byte for byte what faf last wrote (their render hash, render-hash.ts); a\n * `.fafb` must carry the FAFB header (see {@link safeReplaceOwned}). Anything\n * else is refused unless the caller passes `force` (the CLI's `--force`).\n *\n * Rule 6 — detection reads stay inside the project. The files faf reads to fill\n * slots and render context (README.md, package.json, pyproject.toml,\n * Cargo.toml, go.mod, …) go through {@link repoFile}: resolved on disk, every\n * link followed. A file whose real path, or the folder it sits in, leaves the\n * project folder, runs through `.git`, or is a dangling link is absent to\n * detection: it does not exist, and reading it gives nothing. A link that\n * stays inside the project is followed (README.md → docs/README.md).\n */\nimport {\n accessSync,\n closeSync,\n constants,\n existsSync,\n fchmodSync,\n fchownSync,\n fsyncSync,\n lstatSync,\n mkdirSync,\n mkdtempSync,\n openSync,\n readdirSync,\n readFileSync,\n readlinkSync,\n realpathSync,\n renameSync,\n rmSync,\n statSync,\n unlinkSync,\n writeFileSync,\n type Dirent,\n type Stats,\n} from 'fs';\nimport { randomBytes } from 'crypto';\nimport { tmpdir } from 'os';\nimport { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'path';\n\n/** Why a path was refused. */\nexport type SafePathReason =\n | 'outside'\n | 'dangling'\n | 'not-a-file'\n | 'not-faf'\n | 'other-file'\n | 'git'\n | 'not-utf8'\n | 'changed'\n | 'not-owned'\n | 'not-yaml'\n | 'unplaceable';\n\n/**\n * A path faf will not read or write, or a file faf will not change. Nothing\n * was written; the file on disk is exactly as it was.\n * - `outside`, `dangling`, `not-a-file`, `not-faf`, `other-file`, `git`: the\n * path is refused (see {@link resolveInside}).\n * - `not-utf8`: the file is not UTF-8 (see {@link readUtf8}).\n * - `changed`: the file changed on disk after faf read it — its bytes, or its\n * mode (see the `expect` option of {@link safeWriteFile}).\n * - `not-owned`: a whole file faf renders is already there and faf cannot\n * prove it wrote every byte of it — it has no faf mark, or it was edited\n * since faf wrote it, or it is from before faf recorded a render hash (see\n * {@link safeReplaceOwned} and render-hash.ts).\n * - `not-yaml`: a .faf faf reads or edits is not valid YAML: \"<file> is not\n * valid YAML (<reason>, line N) — faf left it unchanged\"; or it parses to\n * a scalar or a list, not a mapping; or faf's scoring kernel cannot read\n * it (`faf score`, `faf compile`, `faf refresh`).\n * - `unplaceable`: faf could not place its managed block where its next run\n * finds it again, so it wrote nothing (see inject.ts).\n *\n * `onWrite` is true when faf refused at the write itself — it may have read\n * the file before (a `.faf` read through a link, say) — and false when it\n * refused before reading or writing anything.\n */\nexport class SafePathError extends Error {\n readonly reason: SafePathReason;\n /** The path as the caller named it (absolute). */\n readonly path: string;\n /** True when the refusal came at the write (faf may have read the file first). */\n readonly onWrite: boolean;\n\n constructor(reason: SafePathReason, path: string, message: string, opts: { onWrite?: boolean; cause?: unknown } = {}) {\n super(message, opts.cause === undefined ? undefined : { cause: opts.cause });\n this.name = 'SafePathError';\n this.reason = reason;\n this.path = path;\n this.onWrite = opts.onWrite === true;\n }\n}\n\nexport interface ResolveInsideOptions {\n /** Resolving for a read of project context: a link must end at a `.faf` or\n * `.fafm` file — or, when the name is an AI context file (CLAUDE.md), at\n * another AI context file (CLAUDE.md → AGENTS.md), the rule the writers\n * use. A plain file is read under the name the caller gave. */\n read?: boolean;\n /**\n * Resolving faf's own git hook (`faf hooks`) — one of the two exceptions\n * to the `.git` rule. `dir` must be the repo's hooks folder as git names it\n * (`git rev-parse --git-path hooks`, a folder named `hooks`), and `name` a\n * hook file sitting directly in it (`pre-commit`). Only that file may be\n * inside `.git`; nothing below or beside it. Links are still checked: a\n * link must stay inside the hooks folder's real folder and end at a file of\n * the same name.\n */\n allowGitHooks?: boolean;\n /**\n * Resolving the repo's own git config file (`faf diff --uninstall-driver`)\n * — the other exception to the `.git` rule. `dir` must be the folder git\n * names for it (the folder of `git rev-parse --git-path config`), and `name`\n * the file `config` directly in it. Only that file may be inside `.git`;\n * nothing below or beside it. A link must stay inside that folder and end\n * at a file named `config`.\n */\n allowGitConfig?: boolean;\n}\n\nexport interface SafeWriteOptions {\n /** The project folder the write must stay inside. Default: the file's own folder. */\n root?: string;\n /**\n * The bytes the caller read from the file. Just before the rename the file\n * is read again; when it no longer equals `expect`, the temp file is removed\n * and a SafePathError (`changed`) is thrown: \"<file> changed on disk while\n * faf was writing — not written; original kept\". A string is compared as its\n * UTF-8 bytes. `null` means the caller found no file there: if one has\n * appeared, the write is refused the same way (a missing file stays\n * missing). Omit it to write without the byte check (the mode check below\n * still runs).\n */\n expect?: string | Uint8Array | null;\n /** Write faf's own git hook: see {@link ResolveInsideOptions.allowGitHooks}. `root` is the hooks folder. */\n allowGitHooks?: boolean;\n /** Write the repo's own git config file: see {@link ResolveInsideOptions.allowGitConfig}. `root` is its folder. */\n allowGitConfig?: boolean;\n /** Permission bits for the written file. Default: the original's (a new\n * file gets the default create mode). */\n mode?: number;\n}\n\n/**\n * The files faf's block injector writes — one managed block, every other byte\n * of the file kept. Each injector writer (writeClaudeMd, writeAgentsMd,\n * writeGeminiMd, writeCursorrules, writeCopilotInstructions, writeMemoryMd,\n * writeLlmsTxt, writeClaudeMemory) takes its file name from this table, so\n * the set is exactly the files those writers target. A link from one of these\n * names to another (CLAUDE.md → AGENTS.md) may be followed.\n */\nexport const FAF_CONTEXT_FILES = Object.freeze({\n claude: 'CLAUDE.md',\n agents: 'AGENTS.md',\n gemini: 'GEMINI.md',\n cursorrules: '.cursorrules',\n copilot: 'copilot-instructions.md',\n memory: 'MEMORY.md',\n llms: 'llms.txt',\n} as const);\n\nconst CONTEXT_NAMES = new Set<string>(Object.values(FAF_CONTEXT_FILES).map(n => n.toLowerCase()));\n/** File names compare without case: a case-insensitive disk (macOS, Windows)\n * spells one name several ways. */\nconst sameName = (a: string, b: string): boolean => a.toLowerCase() === b.toLowerCase();\nconst isContextFile = (name: string): boolean => CONTEXT_NAMES.has(name.toLowerCase());\n\n/** True when a path runs through a `.git` folder, or is `.git` itself. */\nfunction inGitDir(p: string): boolean {\n return p.split(/[\\\\/]/).some(part => part.toLowerCase() === '.git');\n}\n\nconst FAF_FILE = /\\.fafm?$/i;\n/** A git hook's file name (`pre-commit`, `commit-msg`, …). */\nconst HOOK_NAME = /^[a-z][a-z0-9-]*$/;\nconst realpath = (p: string): string => realpathSync.native(p);\nconst errnoOf = (e: unknown): string | undefined => (e as NodeJS.ErrnoException | null)?.code;\n\n/** True when `p` is `root` or below it. Both must already be real paths. */\nfunction isInside(root: string, p: string): boolean {\n const rel = relative(root, p);\n return rel === '' || (rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel));\n}\n\n/** Where a link points, as written in the link — for error messages only. */\nfunction linkText(p: string): string {\n try {\n return readlinkSync(p);\n } catch {\n return '?';\n }\n}\n\n/** What a resolve is for: a read of project context, and/or one of the two\n * files faf may reach inside `.git` (its git hook, the repo's git config) —\n * `inGit`: a file directly in `root` may be inside `.git`. */\ninterface ResolveMode {\n read: boolean;\n inGit: boolean;\n}\n\n/** Resolve the final component when it is a link: it must exist, stay inside\n * `root` and out of `.git` (a hook may sit directly in the hooks folder, the\n * git config directly in its folder),\n * be a regular file and — for a read of project context — be a .faf/.fafm\n * file; otherwise have the link's own name, or be an AI context file reached\n * from one. */\nfunction followLink(root: string, requested: string, link: string, mode: ResolveMode): string {\n let real: string;\n try {\n real = realpath(link);\n } catch (e) {\n const code = errnoOf(e);\n if (code === 'ENOENT' || code === 'ELOOP' || code === 'ENOTDIR') {\n throw new SafePathError(\n 'dangling',\n requested,\n `${requested} is a link to ${linkText(link)}, which does not exist. faf does not create files through a link — refused.`,\n );\n }\n throw e;\n }\n if (!isInside(root, real)) {\n throw new SafePathError('outside', requested, `${requested} is a link to ${real}, outside ${root} — refused.`);\n }\n if (inGitDir(real) && !(mode.inGit && dirname(real) === root)) {\n throw new SafePathError('git', requested, `${requested} is a link to ${real}, inside .git/ — refused.`);\n }\n if (!statSync(real).isFile()) {\n throw new SafePathError('not-a-file', requested, `${requested} is a link to ${real}, which is not a regular file — refused.`);\n }\n refuseOtherKind(requested, real, mode.read);\n return real;\n}\n\n/** The file at the end of a link must be the kind the caller asked for: for a\n * read of project context a .faf/.fafm file (or, for an AI context file,\n * another AI context file); otherwise a file with the link's own name, or an\n * AI context file when the link is one too. */\nfunction refuseOtherKind(requested: string, real: string, read: boolean): void {\n const asked = basename(requested);\n const got = basename(real);\n const contextToContext = isContextFile(asked) && isContextFile(got);\n if (read && !FAF_FILE.test(got) && !contextToContext) {\n const kind = isContextFile(asked) ? 'a .faf or .fafm file, nor another AI context file' : 'a .faf or .fafm file';\n throw new SafePathError('not-faf', requested, `${requested} is a link to ${real}, which is not ${kind} — refused.`);\n }\n if (!read && !sameName(asked, got) && !contextToContext) {\n throw new SafePathError(\n 'other-file',\n requested,\n `${requested} is a link to ${real}, a file with another name — refused (faf follows a link only to a file of the same name, or from one AI context file to another).`,\n );\n }\n}\n\n/** With allowGitHooks: `dir` must be a hooks folder and `requested` a hook\n * file directly in it — the whole of the exception. */\nfunction checkHookTarget(dir: string, requested: string, root: string, folder: string): void {\n if (basename(resolve(dir)) !== 'hooks' || !HOOK_NAME.test(basename(requested))) {\n throw new SafePathError('git', requested, `${requested} is not a git hook in a hooks folder — refused.`);\n }\n if (folder !== root) {\n throw new SafePathError('git', requested, `${requested} is not directly in the hooks folder ${root} — refused.`);\n }\n}\n\n/** With allowGitConfig: `requested` must be the file `config` directly in the\n * folder git names for it — the whole of the exception. */\nfunction checkConfigTarget(requested: string, root: string, folder: string): void {\n if (basename(requested) !== 'config' || folder !== root) {\n throw new SafePathError('git', requested, `${requested} is not the git config file directly in ${root} — refused.`);\n }\n}\n\n/**\n * Resolve `name` inside the project folder `dir` and return the real path to\n * read or write — or throw a SafePathError.\n *\n * - the folder the file sits in must resolve to `dir` or below it\n * - a path whose real form runs through `.git` → refused, always (the two\n * exceptions: `allowGitHooks`, a hook file directly in the hooks folder,\n * and `allowGitConfig`, the file `config` directly in its git folder)\n * - a file that does not exist yet → its path inside the project\n * - a regular file → its path (spelled as on disk)\n * - a link → the file it points at, when that exists, is a regular file, is\n * inside the project and out of `.git`, and has the link's own name (or\n * both names are AI context files: CLAUDE.md → AGENTS.md). With `read`, the\n * file must be a .faf/.fafm file instead (`project.faf → config/team.faf`),\n * or — for an AI context file — another AI context file.\n * - anything else (a link out, a dangling link, a link to a file with\n * another name, a folder, a device) → refused\n *\n * `name` may be relative to `dir` or absolute. `dir` and the folder `name` sits\n * in must exist (their ENOENT is thrown as is).\n */\nexport function resolveInside(dir: string, name: string, opts: ResolveInsideOptions = {}): string {\n const root = realpath(resolve(dir));\n const requested = resolve(dir, name);\n const folder = realpath(dirname(requested));\n if (!isInside(root, folder)) {\n throw new SafePathError('outside', requested, `${requested} is in ${folder}, outside ${root} — refused.`);\n }\n const hooks = opts.allowGitHooks === true;\n const gitConfig = opts.allowGitConfig === true;\n if (hooks) {checkHookTarget(dir, requested, root, folder);}\n if (gitConfig) {checkConfigTarget(requested, root, folder);}\n const target = join(folder, basename(requested));\n if (inGitDir(target) && !hooks && !gitConfig) {\n throw new SafePathError(\n 'git',\n requested,\n target === requested ? `${requested} is inside .git/ — refused.` : `${requested} resolves to ${target}, inside .git/ — refused.`,\n );\n }\n let st;\n try {\n st = lstatSync(target);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return target;}\n throw e;\n }\n if (st.isSymbolicLink()) {return followLink(root, requested, target, { read: opts.read === true, inGit: hooks || gitConfig });}\n if (!st.isFile()) {\n throw new SafePathError('not-a-file', requested, `${requested} is not a regular file — refused.`);\n }\n // The name as it is on disk (a case-insensitive disk may spell it differently).\n return realpath(target);\n}\n\nconst UTF8 = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true });\n\n/** `bytes` as text, strictly: see {@link readUtf8}. `path` names the file in the refusal. */\nfunction decodeUtf8(bytes: Uint8Array, path: string): string {\n const utf16Bom = bytes.length >= 2 && ((bytes[0] === 0xff && bytes[1] === 0xfe) || (bytes[0] === 0xfe && bytes[1] === 0xff));\n if (!utf16Bom) {\n try {\n return UTF8.decode(bytes);\n } catch {\n /* not UTF-8: refused below */\n }\n }\n throw new SafePathError('not-utf8', path, `${path} is not UTF-8 — faf left it unchanged`);\n}\n\n/**\n * Read a text file faf may write back — strictly as UTF-8. A UTF-8 BOM is kept\n * (U+FEFF at the start of the text, as a plain read gives it). A UTF-16 BOM\n * (FF FE or FE FF) or any byte sequence that is not UTF-8 is refused with a\n * SafePathError (`not-utf8`): \"<file> is not UTF-8 — faf left it unchanged\". A\n * lenient read would turn those bytes into U+FFFD, and the next write would\n * lose them. Other read errors (ENOENT, EACCES, …) are thrown as they are.\n * `path` is read as given: resolve it with {@link resolveInside} first.\n */\nexport function readUtf8(path: string): string {\n return decodeUtf8(readFileSync(path), path);\n}\n\n/** The bytes at `path`, or null when nothing is there (only ENOENT). */\nexport function readBytesIfPresent(path: string): Buffer | null {\n try {\n return readFileSync(path);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return null;}\n throw e;\n }\n}\n\n/**\n * Where detection may read `rel` in the project folder `dir` — its real path —\n * or null when detection treats it as absent (Rule 6). `rel` names a file or a\n * folder, relative to `dir` (as `join(dir, rel)`). Every link on the way is\n * followed, the folders included; the result is null when:\n * - nothing is there, or a link on the way dangles or loops\n * - the real path leaves `dir` (README.md → ~/.aws/credentials, or a folder\n * on the way that is a link out)\n * - the real path runs through `.git` (README.md → .git/config)\n * A link that stays inside `dir` is followed. `dir` is the folder detection\n * was handed: the project, or a folder below it that detection reads on its\n * own (a subfolder's manifest), so a link may not leave that folder either.\n */\nexport function repoFile(dir: string, rel: string): string | null {\n const full = resolve(join(dir, rel));\n if (!existsSync(full)) {return null;} // not there, or a dangling link\n let root: string;\n let real: string;\n try {\n root = realpath(detectionBoundary(dir));\n real = realpath(full);\n } catch {\n return null; // a loop, or gone meanwhile\n }\n if (!isInside(root, real) || inGitDir(relative(root, real))) {return null;}\n return real;\n}\n\n/** The project folders detection is running in, outermost first (see\n * {@link withRepoRoot}). */\nconst detectionRoots: string[] = [];\n\n/** The folder a read in `dir` may not leave: the outermost project folder\n * detection is running in that holds `dir`, or `dir` itself. */\nfunction detectionBoundary(dir: string): string {\n const base = resolve(dir);\n return detectionRoots.find(r => base === r || base.startsWith(r.endsWith(sep) ? r : r + sep)) ?? base;\n}\n\n/**\n * Run `scan` with `root` as the project folder for every detection read under\n * it: a read in a subfolder (web/package.json) may then follow a link to\n * anywhere inside `root` (../shared/web-package.json), not only inside that\n * subfolder. A link out of `root` is still absent. Subfolder scans use this.\n */\nexport function withRepoRoot<T>(root: string, scan: () => T): T {\n detectionRoots.push(resolve(root));\n try {\n return scan();\n } finally {\n detectionRoots.pop();\n }\n}\n\n/** True when `rel` (a file or a folder) is in the project folder `dir` for\n * detection: see {@link repoFile}. */\nexport function repoExists(dir: string, rel: string): boolean {\n return repoFile(dir, rel) !== null;\n}\n\n/** The text of the file `rel` in the project folder `dir` (UTF-8, read the way\n * detection reads it), or null when detection treats it as absent (see\n * {@link repoFile}), it is not a regular file, or it cannot be read. */\nexport function readRepoFile(dir: string, rel: string): string | null {\n const real = repoFile(dir, rel);\n if (real === null) {return null;}\n try {\n return statSync(real).isFile() ? readFileSync(real, 'utf-8') : null;\n } catch {\n return null;\n }\n}\n\n/** What `rel` is (its real path's stats) in the project folder `dir`, or null\n * when detection treats it as absent (see {@link repoFile}). */\nexport function statRepoFile(dir: string, rel: string): Stats | null {\n const real = repoFile(dir, rel);\n if (real === null) {return null;}\n try {\n return statSync(real);\n } catch {\n return null;\n }\n}\n\n/**\n * The entries of the folder `rel` (default: `dir` itself) in the project\n * folder `dir`, or null when detection treats the folder as absent (see\n * {@link repoFile}) or it cannot be read. A link among them that leaves `dir`,\n * dangles, or leads into `.git` is left out: detection does not see it. Each\n * entry says what it is itself (a link is a link, as readdirSync gives it).\n */\nexport function readRepoDir(dir: string, rel = '.'): Dirent[] | null {\n const real = repoFile(dir, rel);\n if (real === null) {return null;}\n let entries: Dirent[];\n try {\n entries = readdirSync(real, { withFileTypes: true });\n } catch {\n return null;\n }\n return entries.filter(e => !e.isSymbolicLink() || repoFile(dir, join(rel, e.name)) !== null);\n}\n\n/** What to keep from the file already at `target` — its permission bits and\n * owner — or undefined when there is none yet. */\ninterface Kept {\n /** Permission bits given to the new file (rwx for owner, group, other). */\n mode: number;\n /** Every mode bit as it was (setuid, setgid and sticky included), to notice a change. */\n perm: number;\n uid: number;\n gid: number;\n}\n\nfunction existingFile(target: string): Kept | undefined {\n try {\n const st = statSync(target);\n return { mode: st.mode & 0o777, perm: st.mode & 0o7777, uid: st.uid, gid: st.gid };\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return undefined;}\n throw e;\n }\n}\n\n/**\n * A write that failed partway — a full disk, a quota, a read-only file, a\n * killed rename — with the file on disk exactly as it was: \"<file>: not\n * written; original kept (<why>)\" (\"not written\" alone when there was no file).\n * `cause` is the error underneath. The CLI prints it as one line.\n */\nexport class NotWrittenError extends Error {\n /** The file that was not written. */\n readonly path: string;\n\n constructor(path: string, message: string, opts: { cause?: unknown } = {}) {\n super(message, { cause: opts.cause });\n this.path = path;\n }\n}\n\nconst changedOnDisk = (target: string): SafePathError =>\n new SafePathError('changed', target, `${target} changed on disk while faf was writing — not written; original kept`, { onWrite: true });\n\n/** Refuse the rename when the file is no longer what the caller read (its\n * bytes, with `expect`), or when its mode changed or it stopped being\n * writable since faf looked at it (`kept`): a file the user made read-only,\n * or gave other permissions, while faf was writing is left as it is. */\nfunction assertUnchanged(target: string, expect: SafeWriteOptions['expect'], kept: Kept | undefined): void {\n if (expect !== undefined) {\n const now = readBytesIfPresent(target);\n const want = expect === null ? null : typeof expect === 'string' ? Buffer.from(expect, 'utf-8') : Buffer.from(expect);\n const same = now === null || want === null ? now === want : now.equals(want);\n if (!same) {throw changedOnDisk(target);}\n }\n if (!kept) {return;}\n let st;\n try {\n st = statSync(target);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return;} // gone: the byte check above decides\n throw e;\n }\n if ((st.mode & 0o7777) !== kept.perm) {throw changedOnDisk(target);}\n try {\n accessSync(target, constants.W_OK);\n } catch {\n throw changedOnDisk(target);\n }\n}\n\n/** Give the temp file the original's owner (best effort: only root, or a\n * group member for the group, may) and exactly its permission bits. */\nfunction keepOwnerAndMode(fd: number, kept: Kept): void {\n if (process.platform !== 'win32') {\n try { fchownSync(fd, kept.uid, kept.gid); } catch { /* not ours to give */ }\n }\n fchmodSync(fd, kept.mode); // the umask narrowed the create mode\n}\n\n/** Flush the folder entry after the rename. Best effort: the data is already\n * safe, and some platforms (Windows) cannot open a folder. */\nfunction syncFolder(folder: string): void {\n if (process.platform === 'win32') {return;}\n try {\n const fd = openSync(folder, 'r');\n try {\n fsyncSync(fd);\n } finally {\n closeSync(fd);\n }\n } catch {\n /* best effort */\n }\n}\n\n/** The temp file a write goes through; `fd` is set while it is open. */\ninterface TempFile {\n path: string;\n fd?: number;\n created: boolean;\n}\n\n/** Create the temp file (never opening anything already at its name — 'wx' is\n * O_CREAT | O_EXCL, a link included), write it in full, keep the original's\n * owner and mode (or give it `mode`), flush it to disk and close it. */\nfunction fillTemp(temp: TempFile, content: string | Uint8Array, kept: Kept | undefined, mode: number | undefined): void {\n temp.fd = openSync(temp.path, 'wx', mode ?? kept?.mode ?? 0o666);\n temp.created = true;\n writeFileSync(temp.fd, content);\n if (kept) {keepOwnerAndMode(temp.fd, kept);}\n if (mode !== undefined) {fchmodSync(temp.fd, mode);}\n fsyncSync(temp.fd);\n closeSync(temp.fd);\n temp.fd = undefined;\n}\n\n/** Close and remove a temp file after a failure. Never touches a file this\n * write did not create. */\nfunction discardTemp(temp: TempFile): void {\n if (temp.fd !== undefined) {\n try { closeSync(temp.fd); } catch { /* already failing */ }\n }\n if (temp.created) {\n try { unlinkSync(temp.path); } catch { /* already failing */ }\n }\n}\n\n/** Write `content` to `target` atomically: temp file in the same folder,\n * fsync, then — when the file is still what the caller read (`expect`), with\n * the same mode, and still writable — rename over. `target` must already be\n * resolved. */\nfunction replaceAtomically(target: string, content: string | Uint8Array, opts: SafeWriteOptions): void {\n const folder = dirname(target);\n const temp: TempFile = {\n path: join(folder, `.${basename(target).slice(0, 100)}.${process.pid}.${randomBytes(6).toString('hex')}.faf-tmp`),\n created: false,\n };\n const kept = existingFile(target);\n try {\n // A file faf may not write in place (read-only) is not replaced either.\n if (kept) {accessSync(target, constants.W_OK);}\n fillTemp(temp, content, kept, opts.mode);\n assertUnchanged(target, opts.expect, kept);\n renameSync(temp.path, target);\n } catch (e) {\n discardTemp(temp);\n if (e instanceof SafePathError) {throw e;}\n const why = errnoOf(e) ?? (e instanceof Error ? e.message : String(e));\n throw new NotWrittenError(target, `${target}: not written${kept ? '; original kept' : ''} (${why})`, { cause: e });\n }\n syncFolder(folder);\n}\n\n/** A refusal raised while writing: the same SafePathError, marked `onWrite`. */\nfunction atWrite(e: unknown): unknown {\n return e instanceof SafePathError && !e.onWrite ? new SafePathError(e.reason, e.path, e.message, { onWrite: true }) : e;\n}\n\n/**\n * Write a file inside a project, safely: resolved with {@link resolveInside}\n * (a link that leaves the project, dangles, or leads to a file with another\n * name, and anything in `.git`, is refused), then replaced atomically (temp\n * file in the same folder, fsync, rename; the original's permissions — and,\n * where the OS allows, its owner — kept). On any failure the original is\n * untouched and the Error says \"not written; original kept\". With `expect`,\n * a file that changed after the caller read it is not replaced either\n * (SafePathError `changed`); nor is one whose mode changed, or that became\n * read-only, while faf was writing. Returns the real path written — the\n * link's target when `path` is an in-project link.\n */\nexport function safeWriteFile(path: string, content: string | Uint8Array, opts: SafeWriteOptions = {}): string {\n const full = resolve(path);\n let target: string;\n try {\n target = resolveInside(opts.root ?? dirname(full), full, { allowGitHooks: opts.allowGitHooks, allowGitConfig: opts.allowGitConfig });\n } catch (e) {\n throw atWrite(e);\n }\n replaceAtomically(target, content, opts);\n return target;\n}\n\n/** Options for {@link safeReplaceOwned}. */\nexport interface ReplaceOwnedOptions {\n /** The project folder the write must stay inside. Default: the file's own folder. */\n root?: string;\n /** True when the bytes already at the path carry faf's own mark (faf wrote them). */\n owns: (existing: Buffer) => boolean;\n /** faf's mark in words, for the refusal: \"the `_meta[\\\"one.faf/context\\\"]` block\". */\n mark: string;\n /** Replace a file without the mark anyway — the explicit overwrite (`--force`). */\n force?: boolean;\n /** The bytes the caller read there earlier (`null`: no file then). When\n * given, the file must still hold them, else SafePathError `changed`. */\n expect?: string | Uint8Array | null;\n}\n\n/**\n * Write a whole file faf renders (project.html, a Server Card, an A2A card, a\n * `.fafb`), replacing a file already at `path` only when faf can prove it wrote\n * it: its bytes carry faf's own mark (`owns`). A file without the mark is\n * refused — SafePathError `not-owned`: \"<file> has no <mark>, so faf did not\n * write it — faf left it unchanged.\" — and stays byte for byte, unless `force`\n * asks to replace it. The link rules and the atomic write are\n * {@link safeWriteFile}'s, and the write is refused if the file changed on\n * disk after faf read it. Returns the real path written.\n */\nexport function safeReplaceOwned(path: string, content: string | Uint8Array, opts: ReplaceOwnedOptions): string {\n const full = resolve(path);\n const root = opts.root ?? dirname(full);\n const target = resolveInside(root, full);\n const existing = readBytesIfPresent(target);\n if (opts.expect !== undefined) {assertUnchanged(target, opts.expect, undefined);}\n if (existing !== null && opts.force !== true && !opts.owns(existing)) {\n throw new SafePathError('not-owned', full, `${full} has no ${opts.mark}, so faf did not write it — faf left it unchanged.`, { onWrite: true });\n }\n return safeWriteFile(target, content, { root, expect: existing });\n}\n\n/**\n * Create the folder `dir` inside the project folder `root`, with any missing\n * folders between them, and return its real path. `root` itself is the\n * caller's own folder: it is created as named when missing. Below it, faf\n * never creates a folder through a link: an existing folder on the way that\n * is a link leading out of `root` (or a dangling link) is refused, as is any\n * part inside `.git` and anything on the way that is not a folder — so\n * `.github → ~/elsewhere` cannot make faf create `~/elsewhere/workflows`.\n */\nexport function makeDirInside(root: string, dir: string = root): string {\n const top = resolve(root);\n mkdirSync(top, { recursive: true });\n const realRoot = realpath(top);\n const want = resolve(top, dir);\n const rel = relative(top, want);\n if (rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {\n throw new SafePathError('outside', want, `${want} is outside ${realRoot} — refused.`, { onWrite: true });\n }\n let cur = realRoot;\n for (const part of rel.split(/[\\\\/]/).filter(Boolean)) {\n const next = join(cur, part);\n if (inGitDir(next)) {\n throw new SafePathError('git', want, `${want} runs through ${next}, inside .git/ — refused.`, { onWrite: true });\n }\n cur = stepInto(realRoot, want, next);\n }\n return cur;\n}\n\n/** One folder on the way down in makeDirInside: made when missing, followed\n * when it is a link that stays inside `root`, refused otherwise. */\nfunction stepInto(root: string, want: string, next: string): string {\n let st;\n try {\n st = lstatSync(next);\n } catch (e) {\n if (errnoOf(e) !== 'ENOENT') {throw e;}\n mkdirSync(next);\n return next;\n }\n let real = next;\n if (st.isSymbolicLink()) {\n try {\n real = realpath(next);\n } catch {\n throw new SafePathError('dangling', want, `${next} is a link to ${linkText(next)}, which does not exist. faf does not create folders through a link — refused.`, { onWrite: true });\n }\n if (!isInside(root, real)) {\n throw new SafePathError('outside', want, `${next} is a link to ${real}, outside ${root} — refused.`, { onWrite: true });\n }\n if (inGitDir(real)) {\n throw new SafePathError('git', want, `${next} is a link to ${real}, inside .git/ — refused.`, { onWrite: true });\n }\n }\n if (!statSync(real).isDirectory()) {\n throw new SafePathError('not-a-file', want, `${next} is not a folder — refused.`, { onWrite: true });\n }\n return real;\n}\n\n/**\n * Remove a file faf wrote — only when it still holds exactly `expect` (the\n * bytes faf wrote or read there) and is a regular file inside `root` (default:\n * its own folder), out of `.git`. A link is never removed (faf did not make\n * it), and a file whose bytes changed is left as it is (SafePathError\n * `changed`). Returns false when nothing was there.\n */\nexport function safeUnlink(path: string, opts: { root?: string; expect: string | Uint8Array }): boolean {\n const full = resolve(path);\n const realRoot = realpath(resolve(opts.root ?? dirname(full)));\n const folder = realpath(dirname(full));\n if (!isInside(realRoot, folder)) {\n throw new SafePathError('outside', full, `${full} is in ${folder}, outside ${realRoot} — refused.`, { onWrite: true });\n }\n const target = join(folder, basename(full));\n if (inGitDir(target)) {\n throw new SafePathError('git', full, `${full} is inside .git/ — refused.`, { onWrite: true });\n }\n let st;\n try {\n st = lstatSync(target);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return false;}\n throw e;\n }\n if (!st.isFile()) {\n throw new SafePathError('not-a-file', full, `${full} is not a regular file faf wrote — left as it is.`, { onWrite: true });\n }\n assertUnchanged(target, opts.expect, undefined);\n unlinkSync(target);\n return true;\n}\n\n/** The temp folders makeTempDir made in this process — the only ones removeTempDir removes. */\nconst TEMP_DIRS = new Set<string>();\n\n/** The marker file makeTempDir writes into every temp folder it makes, and\n * its exact content: `faf clear` removes only a folder that carries it. */\nexport const TEMP_MARKER = '.faf-temp';\nconst TEMP_MARKER_TEXT = 'faf made this temp folder; `faf clear` removes it.\\n';\n\n/** Make a new temp folder for faf's own use — `<os temp>/<prefix>XXXXXX`, a\n * fresh name no one else can have made (mkdtemp) — write faf's marker file\n * into it ({@link TEMP_MARKER}), and return its real path. Anything faf puts\n * there (a clone, say) goes in a subfolder, beside the marker. */\nexport function makeTempDir(prefix: string): string {\n const dir = realpath(mkdtempSync(join(tmpdir(), prefix)));\n TEMP_DIRS.add(dir);\n const fd = openSync(join(dir, TEMP_MARKER), 'wx', 0o644);\n try {\n writeFileSync(fd, TEMP_MARKER_TEXT);\n } finally {\n closeSync(fd);\n }\n return dir;\n}\n\n/** Remove a temp folder {@link makeTempDir} made in this process, with what is\n * in it. Any other folder is refused (an Error; nothing removed). */\nexport function removeTempDir(dir: string): void {\n if (!TEMP_DIRS.has(dir)) {throw new Error(`${dir} is not a temp folder faf made — not removed`);}\n rmSync(dir, { recursive: true, force: true });\n TEMP_DIRS.delete(dir);\n}\n\n/** True when the folder `dir` carries makeTempDir's marker: a regular file\n * (never a link) holding exactly the marker text. */\nfunction hasTempMarker(dir: string): boolean {\n const marker = join(dir, TEMP_MARKER);\n try {\n if (!lstatSync(marker).isFile()) {return false;}\n return readFileSync(marker, 'utf-8') === TEMP_MARKER_TEXT;\n } catch {\n return false;\n }\n}\n\nconst escapeRe = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Remove faf's own temp folders left behind by earlier runs (`faf clear`):\n * only folders faf made — entries of the OS temp folder named exactly as\n * mkdtemp names them (`prefix` plus six letters or digits), that are real\n * folders (a link is left alone), belong to this user and carry the marker\n * file {@link makeTempDir} writes into each one. A folder of yours that only\n * starts with the prefix (`faf-git-my-notes`) stays. Returns how many were\n * removed. A folder that cannot be read or removed is skipped.\n */\nexport function removeStaleTempDirs(prefix: string): number {\n const tmp = tmpdir();\n const uid = typeof process.getuid === 'function' ? process.getuid() : undefined;\n const shape = new RegExp(`^${escapeRe(prefix)}[A-Za-z0-9]{6}$`);\n let removed = 0;\n for (const entry of readdirSync(tmp)) {\n if (!shape.test(entry)) {continue;}\n const p = join(tmp, entry);\n try {\n const st = lstatSync(p);\n if (!st.isDirectory() || (uid !== undefined && st.uid !== uid) || !hasTempMarker(p)) {continue;}\n rmSync(p, { recursive: true, force: true });\n removed++;\n } catch {\n /* not ours to remove, or already gone */\n }\n }\n return removed;\n}\n",
85
+ "/**\n * Safe file access — the one primitive every faf writer, and every read of\n * project context, goes through. It is also the only module in faf that calls\n * a filesystem write, rename, delete, mkdir or chmod API (tests/write-guard\n * enforces that for all of src/).\n *\n * Rule 1 — stay inside the project. Before faf touches a path it resolves it on\n * disk (realpath: every link followed). If that leads outside the project\n * folder, faf refuses. A dangling link is refused — faf never creates a file at\n * the end of a link. Anything whose real path is inside a `.git` folder is\n * refused, always — with two narrow exceptions: faf's own git hook\n * (`allowGitHooks`: one file directly inside the repo's hooks folder), and\n * the repo's own git config file (`allowGitConfig`: the file `config`\n * directly in the folder git names for it), where `faf diff\n * --uninstall-driver` removes the section faf's install wrote.\n *\n * Rule 2 — a link leads to the same kind of file. faf follows a link only to a\n * file with the same name (CLAUDE.md → docs/CLAUDE.md), or from one AI context\n * file to another (CLAUDE.md → AGENTS.md; the set is FAF_CONTEXT_FILES). The\n * link itself survives: faf writes the file it points at. `CLAUDE.md →\n * README.md` or `project.html → package.json` is refused — faf would be\n * writing a file it was never asked to write. A read of project context\n * through a link must land on a .faf or .fafm file instead, so `project.faf →\n * .env` is refused even though .env is in the project — or, for a read of an\n * AI context file, on another AI context file (CLAUDE.md → AGENTS.md), the\n * rule the writers use.\n *\n * Rule 3 — never leave a half-written file. A write goes to a temp file in the\n * same folder, is flushed to disk (fsync), then renamed over the original in\n * one step, keeping the original's permissions. If any step fails the temp\n * file is removed and the original is exactly as it was: \"not written;\n * original kept\". A plain writeFileSync truncates first, so a full disk, a\n * quota or a killed process used to leave the user's file cut short. With\n * `expect` (the bytes the caller read), the file is read again just before the\n * rename and the write is refused if it changed in the meantime. Its mode is\n * checked too: a file made read-only, or given other permissions, while faf\n * was writing is not replaced.\n *\n * Rule 4 — text faf edits is UTF-8. readUtf8 decodes strictly: a UTF-16 file or\n * any bytes that are not UTF-8 are refused, never turned into U+FFFD and\n * written back.\n *\n * Rule 5 — a whole file faf renders replaces a file already there only when\n * faf can prove it wrote it: project.html, the cards, `faf server-card --out`,\n * a `faf taf --output` snapshot and a `faf decompile --output` file must be\n * byte for byte what faf last wrote (their render hash, render-hash.ts); a\n * `.fafb` must carry the FAFB header (see {@link safeReplaceOwned}). Anything\n * else is refused unless the caller passes `force` (the CLI's `--force`).\n *\n * Rule 6 — detection reads stay inside the project. The files faf reads to fill\n * slots and render context (README.md, package.json, pyproject.toml,\n * Cargo.toml, go.mod, …) go through {@link repoFile}: resolved on disk, every\n * link followed. A file whose real path, or the folder it sits in, leaves the\n * project folder, runs through `.git`, or is a dangling link is absent to\n * detection: it does not exist, and reading it gives nothing. A link that\n * stays inside the project is followed (README.md → docs/README.md).\n */\nimport {\n accessSync,\n closeSync,\n constants,\n existsSync,\n fchmodSync,\n fchownSync,\n fsyncSync,\n lstatSync,\n mkdirSync,\n mkdtempSync,\n openSync,\n readdirSync,\n readFileSync,\n readlinkSync,\n realpathSync,\n renameSync,\n rmSync,\n statSync,\n unlinkSync,\n writeFileSync,\n type Dirent,\n type Stats,\n} from 'fs';\nimport { randomBytes } from 'crypto';\nimport { tmpdir } from 'os';\nimport { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'path';\n\n/** Why a path was refused. */\nexport type SafePathReason =\n | 'outside'\n | 'dangling'\n | 'not-a-file'\n | 'not-faf'\n | 'other-file'\n | 'git'\n | 'not-utf8'\n | 'changed'\n | 'not-owned'\n | 'not-yaml'\n | 'unplaceable';\n\n/**\n * A path faf will not read or write, or a file faf will not change. Nothing\n * was written; the file on disk is exactly as it was.\n * - `outside`, `dangling`, `not-a-file`, `not-faf`, `other-file`, `git`: the\n * path is refused (see {@link resolveInside}).\n * - `not-utf8`: the file is not UTF-8 (see {@link readUtf8}).\n * - `changed`: the file changed on disk after faf read it — its bytes, or its\n * mode (see the `expect` option of {@link safeWriteFile}).\n * - `not-owned`: a whole file faf renders is already there and faf cannot\n * prove it wrote every byte of it — it has no faf mark, or it was edited\n * since faf wrote it, or it is from before faf recorded a render hash (see\n * {@link safeReplaceOwned} and render-hash.ts).\n * - `not-yaml`: a .faf faf reads or edits is not valid YAML: \"<file> is not\n * valid YAML (<reason>, line N) — faf left it unchanged\"; or it parses to\n * a scalar or a list, not a mapping; or faf's scoring kernel cannot read\n * it (`faf score`, `faf compile`, `faf refresh`).\n * - `unplaceable`: faf could not place its managed block where its next run\n * finds it again, so it wrote nothing (see inject.ts).\n *\n * `onWrite` is true when faf refused at the write itself — it may have read\n * the file before (a `.faf` read through a link, say) — and false when it\n * refused before reading or writing anything.\n */\nexport class SafePathError extends Error {\n readonly reason: SafePathReason;\n /** The path as the caller named it (absolute). */\n readonly path: string;\n /** True when the refusal came at the write (faf may have read the file first). */\n readonly onWrite: boolean;\n\n constructor(reason: SafePathReason, path: string, message: string, opts: { onWrite?: boolean; cause?: unknown } = {}) {\n super(message, opts.cause === undefined ? undefined : { cause: opts.cause });\n this.name = 'SafePathError';\n this.reason = reason;\n this.path = path;\n this.onWrite = opts.onWrite === true;\n }\n}\n\nexport interface ResolveInsideOptions {\n /** Resolving for a read of project context: a link must end at a `.faf` or\n * `.fafm` file — or, when the name is an AI context file (CLAUDE.md), at\n * another AI context file (CLAUDE.md → AGENTS.md), the rule the writers\n * use. A plain file is read under the name the caller gave. */\n read?: boolean;\n /**\n * Resolving faf's own git hook (`faf hooks`) — one of the two exceptions\n * to the `.git` rule. `dir` must be the repo's hooks folder as git names it\n * (`git rev-parse --git-path hooks`, a folder named `hooks`), and `name` a\n * hook file sitting directly in it (`pre-commit`). Only that file may be\n * inside `.git`; nothing below or beside it. Links are still checked: a\n * link must stay inside the hooks folder's real folder and end at a file of\n * the same name.\n */\n allowGitHooks?: boolean;\n /**\n * Resolving the repo's own git config file (`faf diff --uninstall-driver`)\n * — the other exception to the `.git` rule. `dir` must be the folder git\n * names for it (the folder of `git rev-parse --git-path config`), and `name`\n * the file `config` directly in it. Only that file may be inside `.git`;\n * nothing below or beside it. A link must stay inside that folder and end\n * at a file named `config`.\n */\n allowGitConfig?: boolean;\n}\n\nexport interface SafeWriteOptions {\n /** The project folder the write must stay inside. Default: the file's own folder. */\n root?: string;\n /**\n * The bytes the caller read from the file. Just before the rename the file\n * is read again; when it no longer equals `expect`, the temp file is removed\n * and a SafePathError (`changed`) is thrown: \"<file> changed on disk while\n * faf was writing — not written; original kept\". A string is compared as its\n * UTF-8 bytes. `null` means the caller found no file there: if one has\n * appeared, the write is refused the same way (a missing file stays\n * missing). Omit it to write without the byte check (the mode check below\n * still runs).\n */\n expect?: string | Uint8Array | null;\n /** Write faf's own git hook: see {@link ResolveInsideOptions.allowGitHooks}. `root` is the hooks folder. */\n allowGitHooks?: boolean;\n /** Write the repo's own git config file: see {@link ResolveInsideOptions.allowGitConfig}. `root` is its folder. */\n allowGitConfig?: boolean;\n /** Permission bits for the written file. Default: the original's (a new\n * file gets the default create mode). */\n mode?: number;\n}\n\n/**\n * The files faf's block injector writes — one managed block, every other byte\n * of the file kept. Each injector writer (writeClaudeMd, writeAgentsMd,\n * writeGeminiMd, writeCursorrules, writeCopilotInstructions, writeMemoryMd,\n * writeLlmsTxt, writeClaudeMemory) takes its file name from this table, so\n * the set is exactly the files those writers target. A link from one of these\n * names to another (CLAUDE.md → AGENTS.md) may be followed.\n */\nexport const FAF_CONTEXT_FILES = Object.freeze({\n claude: 'CLAUDE.md',\n agents: 'AGENTS.md',\n gemini: 'GEMINI.md',\n cursorrules: '.cursorrules',\n copilot: 'copilot-instructions.md',\n memory: 'MEMORY.md',\n llms: 'llms.txt',\n} as const);\n\nconst CONTEXT_NAMES = new Set<string>(Object.values(FAF_CONTEXT_FILES).map(n => n.toLowerCase()));\n/** File names compare without case: a case-insensitive disk (macOS, Windows)\n * spells one name several ways. */\nconst sameName = (a: string, b: string): boolean => a.toLowerCase() === b.toLowerCase();\nconst isContextFile = (name: string): boolean => CONTEXT_NAMES.has(name.toLowerCase());\n\n/** True when a path runs through a `.git` folder, or is `.git` itself. */\nfunction inGitDir(p: string): boolean {\n return p.split(/[\\\\/]/).some(part => part.toLowerCase() === '.git');\n}\n\nconst FAF_FILE = /\\.fafm?$/i;\n/** A git hook's file name (`pre-commit`, `commit-msg`, …). */\nconst HOOK_NAME = /^[a-z][a-z0-9-]*$/;\nconst realpath = (p: string): string => realpathSync.native(p);\nconst errnoOf = (e: unknown): string | undefined => (e as NodeJS.ErrnoException | null)?.code;\n\n/** True when `p` is `root` or below it. Both must already be real paths. */\nfunction isInside(root: string, p: string): boolean {\n const rel = relative(root, p);\n return rel === '' || (rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel));\n}\n\n/** Where a link points, as written in the link — for error messages only. */\nfunction linkText(p: string): string {\n try {\n return readlinkSync(p);\n } catch {\n return '?';\n }\n}\n\n/** What a resolve is for: a read of project context, and/or one of the two\n * files faf may reach inside `.git` (its git hook, the repo's git config) —\n * `inGit`: a file directly in `root` may be inside `.git`. */\ninterface ResolveMode {\n read: boolean;\n inGit: boolean;\n}\n\n/** Resolve the final component when it is a link: it must exist, stay inside\n * `root` and out of `.git` (a hook may sit directly in the hooks folder, the\n * git config directly in its folder),\n * be a regular file and — for a read of project context — be a .faf/.fafm\n * file; otherwise have the link's own name, or be an AI context file reached\n * from one. */\nfunction followLink(root: string, requested: string, link: string, mode: ResolveMode): string {\n let real: string;\n try {\n real = realpath(link);\n } catch (e) {\n const code = errnoOf(e);\n if (code === 'ENOENT' || code === 'ELOOP' || code === 'ENOTDIR') {\n throw new SafePathError(\n 'dangling',\n requested,\n `${requested} is a link to ${linkText(link)}, which does not exist. faf does not create files through a link — refused.`,\n );\n }\n throw e;\n }\n if (!isInside(root, real)) {\n throw new SafePathError('outside', requested, `${requested} is a link to ${real}, outside ${root} — refused.`);\n }\n if (inGitDir(real) && !(mode.inGit && dirname(real) === root)) {\n throw new SafePathError('git', requested, `${requested} is a link to ${real}, inside .git/ — refused.`);\n }\n if (!statSync(real).isFile()) {\n throw new SafePathError('not-a-file', requested, `${requested} is a link to ${real}, which is not a regular file — refused.`);\n }\n refuseOtherKind(requested, real, mode.read);\n return real;\n}\n\n/** The file at the end of a link must be the kind the caller asked for: for a\n * read of project context a .faf/.fafm file (or, for an AI context file,\n * another AI context file); otherwise a file with the link's own name, or an\n * AI context file when the link is one too. */\nfunction refuseOtherKind(requested: string, real: string, read: boolean): void {\n const asked = basename(requested);\n const got = basename(real);\n const contextToContext = isContextFile(asked) && isContextFile(got);\n if (read && !FAF_FILE.test(got) && !contextToContext) {\n const kind = isContextFile(asked) ? 'a .faf or .fafm file, nor another AI context file' : 'a .faf or .fafm file';\n throw new SafePathError('not-faf', requested, `${requested} is a link to ${real}, which is not ${kind} — refused.`);\n }\n if (!read && !sameName(asked, got) && !contextToContext) {\n throw new SafePathError(\n 'other-file',\n requested,\n `${requested} is a link to ${real}, a file with another name — refused (faf follows a link only to a file of the same name, or from one AI context file to another).`,\n );\n }\n}\n\n/** With allowGitHooks: `dir` must be a hooks folder and `requested` a hook\n * file directly in it — the whole of the exception. */\nfunction checkHookTarget(dir: string, requested: string, root: string, folder: string): void {\n if (basename(resolve(dir)) !== 'hooks' || !HOOK_NAME.test(basename(requested))) {\n throw new SafePathError('git', requested, `${requested} is not a git hook in a hooks folder — refused.`);\n }\n if (folder !== root) {\n throw new SafePathError('git', requested, `${requested} is not directly in the hooks folder ${root} — refused.`);\n }\n}\n\n/** With allowGitConfig: `requested` must be the file `config` directly in the\n * folder git names for it — the whole of the exception. */\nfunction checkConfigTarget(requested: string, root: string, folder: string): void {\n if (basename(requested) !== 'config' || folder !== root) {\n throw new SafePathError('git', requested, `${requested} is not the git config file directly in ${root} — refused.`);\n }\n}\n\n/**\n * Resolve `name` inside the project folder `dir` and return the real path to\n * read or write — or throw a SafePathError.\n *\n * - the folder the file sits in must resolve to `dir` or below it\n * - a path whose real form runs through `.git` → refused, always (the two\n * exceptions: `allowGitHooks`, a hook file directly in the hooks folder,\n * and `allowGitConfig`, the file `config` directly in its git folder)\n * - a file that does not exist yet → its path inside the project\n * - a regular file → its path (spelled as on disk)\n * - a link → the file it points at, when that exists, is a regular file, is\n * inside the project and out of `.git`, and has the link's own name (or\n * both names are AI context files: CLAUDE.md → AGENTS.md). With `read`, the\n * file must be a .faf/.fafm file instead (`project.faf → config/team.faf`),\n * or — for an AI context file — another AI context file.\n * - anything else (a link out, a dangling link, a link to a file with\n * another name, a folder, a device) → refused\n *\n * `name` may be relative to `dir` or absolute. `dir` and the folder `name` sits\n * in must exist (their ENOENT is thrown as is).\n */\nexport function resolveInside(dir: string, name: string, opts: ResolveInsideOptions = {}): string {\n const root = realpath(resolve(dir));\n const requested = resolve(dir, name);\n const folder = realpath(dirname(requested));\n if (!isInside(root, folder)) {\n throw new SafePathError('outside', requested, `${requested} is in ${folder}, outside ${root} — refused.`);\n }\n const hooks = opts.allowGitHooks === true;\n const gitConfig = opts.allowGitConfig === true;\n if (hooks) {checkHookTarget(dir, requested, root, folder);}\n if (gitConfig) {checkConfigTarget(requested, root, folder);}\n const target = join(folder, basename(requested));\n if (inGitDir(target) && !hooks && !gitConfig) {\n throw new SafePathError(\n 'git',\n requested,\n target === requested ? `${requested} is inside .git/ — refused.` : `${requested} resolves to ${target}, inside .git/ — refused.`,\n );\n }\n let st;\n try {\n st = lstatSync(target);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return target;}\n throw e;\n }\n if (st.isSymbolicLink()) {return followLink(root, requested, target, { read: opts.read === true, inGit: hooks || gitConfig });}\n if (!st.isFile()) {\n throw new SafePathError('not-a-file', requested, `${requested} is not a regular file — refused.`);\n }\n // The name as it is on disk (a case-insensitive disk may spell it differently).\n return realpath(target);\n}\n\nconst UTF8 = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true });\n\n/** `bytes` as text, strictly: see {@link readUtf8}. `path` names the file in the refusal. */\nfunction decodeUtf8(bytes: Uint8Array, path: string): string {\n const utf16Bom = bytes.length >= 2 && ((bytes[0] === 0xff && bytes[1] === 0xfe) || (bytes[0] === 0xfe && bytes[1] === 0xff));\n if (!utf16Bom) {\n try {\n return UTF8.decode(bytes);\n } catch {\n /* not UTF-8: refused below */\n }\n }\n throw new SafePathError('not-utf8', path, `${path} is not UTF-8 — faf left it unchanged`);\n}\n\n/**\n * Read a text file faf may write back — strictly as UTF-8. A UTF-8 BOM is kept\n * (U+FEFF at the start of the text, as a plain read gives it). A UTF-16 BOM\n * (FF FE or FE FF) or any byte sequence that is not UTF-8 is refused with a\n * SafePathError (`not-utf8`): \"<file> is not UTF-8 — faf left it unchanged\". A\n * lenient read would turn those bytes into U+FFFD, and the next write would\n * lose them. Other read errors (ENOENT, EACCES, …) are thrown as they are.\n * `path` is read as given: resolve it with {@link resolveInside} first.\n */\nexport function readUtf8(path: string): string {\n return decodeUtf8(readFileSync(path), path);\n}\n\n/** The bytes at `path`, or null when nothing is there (only ENOENT). */\nexport function readBytesIfPresent(path: string): Buffer | null {\n try {\n return readFileSync(path);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return null;}\n throw e;\n }\n}\n\n/**\n * Where detection may read `rel` in the project folder `dir` — its real path —\n * or null when detection treats it as absent (Rule 6). `rel` names a file or a\n * folder, relative to `dir` (as `join(dir, rel)`). Every link on the way is\n * followed, the folders included; the result is null when:\n * - nothing is there, or a link on the way dangles or loops\n * - the real path leaves `dir` (README.md → ~/.aws/credentials, or a folder\n * on the way that is a link out)\n * - the real path runs through `.git` (README.md → .git/config)\n * A link that stays inside `dir` is followed. `dir` is the folder detection\n * was handed: the project, or a folder below it that detection reads on its\n * own (a subfolder's manifest), so a link may not leave that folder either.\n */\nexport function repoFile(dir: string, rel: string): string | null {\n const full = resolve(join(dir, rel));\n if (!existsSync(full)) {return null;} // not there, or a dangling link\n let root: string;\n let real: string;\n try {\n root = realpath(detectionBoundary(dir));\n real = realpath(full);\n } catch {\n return null; // a loop, or gone meanwhile\n }\n if (!isInside(root, real) || inGitDir(relative(root, real))) {return null;}\n return real;\n}\n\n/** The project folders detection is running in, outermost first (see\n * {@link withRepoRoot}). */\nconst detectionRoots: string[] = [];\n\n/** The folder a read in `dir` may not leave: the outermost project folder\n * detection is running in that holds `dir`, or `dir` itself. */\nfunction detectionBoundary(dir: string): string {\n const base = resolve(dir);\n return detectionRoots.find(r => base === r || base.startsWith(r.endsWith(sep) ? r : r + sep)) ?? base;\n}\n\n/**\n * Run `scan` with `root` as the project folder for every detection read under\n * it: a read in a subfolder (web/package.json) may then follow a link to\n * anywhere inside `root` (../shared/web-package.json), not only inside that\n * subfolder. A link out of `root` is still absent. Subfolder scans use this.\n */\nexport function withRepoRoot<T>(root: string, scan: () => T): T {\n detectionRoots.push(resolve(root));\n try {\n return scan();\n } finally {\n detectionRoots.pop();\n }\n}\n\n/** True when `rel` (a file or a folder) is in the project folder `dir` for\n * detection: see {@link repoFile}. */\nexport function repoExists(dir: string, rel: string): boolean {\n return repoFile(dir, rel) !== null;\n}\n\n/** The text of the file `rel` in the project folder `dir` (UTF-8, read the way\n * detection reads it), or null when detection treats it as absent (see\n * {@link repoFile}), it is not a regular file, or it cannot be read. */\nexport function readRepoFile(dir: string, rel: string): string | null {\n const real = repoFile(dir, rel);\n if (real === null) {return null;}\n try {\n return statSync(real).isFile() ? readFileSync(real, 'utf-8') : null;\n } catch {\n return null;\n }\n}\n\n/** What `rel` is (its real path's stats) in the project folder `dir`, or null\n * when detection treats it as absent (see {@link repoFile}). */\nexport function statRepoFile(dir: string, rel: string): Stats | null {\n const real = repoFile(dir, rel);\n if (real === null) {return null;}\n try {\n return statSync(real);\n } catch {\n return null;\n }\n}\n\n/**\n * The entries of the folder `rel` (default: `dir` itself) in the project\n * folder `dir`, or null when detection treats the folder as absent (see\n * {@link repoFile}) or it cannot be read. A link among them that leaves `dir`,\n * dangles, or leads into `.git` is left out: detection does not see it. Each\n * entry says what it is itself (a link is a link, as readdirSync gives it).\n */\nexport function readRepoDir(dir: string, rel = '.'): Dirent[] | null {\n const real = repoFile(dir, rel);\n if (real === null) {return null;}\n let entries: Dirent[];\n try {\n entries = readdirSync(real, { withFileTypes: true });\n } catch {\n return null;\n }\n return entries.filter(e => !e.isSymbolicLink() || repoFile(dir, join(rel, e.name)) !== null);\n}\n\n/** What to keep from the file already at `target` — its permission bits and\n * owner — or undefined when there is none yet. */\ninterface Kept {\n /** Permission bits given to the new file (rwx for owner, group, other). */\n mode: number;\n /** Every mode bit as it was (setuid, setgid and sticky included), to notice a change. */\n perm: number;\n uid: number;\n gid: number;\n}\n\nfunction existingFile(target: string): Kept | undefined {\n try {\n const st = statSync(target);\n return { mode: st.mode & 0o777, perm: st.mode & 0o7777, uid: st.uid, gid: st.gid };\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return undefined;}\n throw e;\n }\n}\n\n/**\n * A write that failed partway — a full disk, a quota, a read-only file, a\n * killed rename — with the file on disk exactly as it was: \"<file>: not\n * written; original kept (<why>)\" (\"not written\" alone when there was no file).\n * `cause` is the error underneath. The CLI prints it as one line.\n */\nexport class NotWrittenError extends Error {\n /** The file that was not written. */\n readonly path: string;\n\n constructor(path: string, message: string, opts: { cause?: unknown } = {}) {\n super(message, { cause: opts.cause });\n this.path = path;\n }\n}\n\nconst changedOnDisk = (target: string): SafePathError =>\n new SafePathError('changed', target, `${target} changed on disk while faf was writing — not written; original kept`, { onWrite: true });\n\n/** Refuse the rename when the file is no longer what the caller read (its\n * bytes, with `expect`), or when its mode changed or it stopped being\n * writable since faf looked at it (`kept`): a file the user made read-only,\n * or gave other permissions, while faf was writing is left as it is. */\nfunction assertUnchanged(target: string, expect: SafeWriteOptions['expect'], kept: Kept | undefined): void {\n if (expect !== undefined) {\n const now = readBytesIfPresent(target);\n const want = expect === null ? null : typeof expect === 'string' ? Buffer.from(expect, 'utf-8') : Buffer.from(expect);\n const same = now === null || want === null ? now === want : now.equals(want);\n if (!same) {throw changedOnDisk(target);}\n }\n if (!kept) {return;}\n let st;\n try {\n st = statSync(target);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return;} // gone: the byte check above decides\n throw e;\n }\n if ((st.mode & 0o7777) !== kept.perm) {throw changedOnDisk(target);}\n try {\n accessSync(target, constants.W_OK);\n } catch {\n throw changedOnDisk(target);\n }\n}\n\n/** Give the temp file the original's owner (best effort: only root, or a\n * group member for the group, may) and exactly its permission bits. */\nfunction keepOwnerAndMode(fd: number, kept: Kept): void {\n if (process.platform !== 'win32') {\n try { fchownSync(fd, kept.uid, kept.gid); } catch { /* not ours to give */ }\n }\n fchmodSync(fd, kept.mode); // the umask narrowed the create mode\n}\n\n/** Flush the folder entry after the rename. Best effort: the data is already\n * safe, and some platforms (Windows) cannot open a folder. */\nfunction syncFolder(folder: string): void {\n if (process.platform === 'win32') {return;}\n try {\n const fd = openSync(folder, 'r');\n try {\n fsyncSync(fd);\n } finally {\n closeSync(fd);\n }\n } catch {\n /* best effort */\n }\n}\n\n/** The temp file a write goes through; `fd` is set while it is open. */\ninterface TempFile {\n path: string;\n fd?: number;\n created: boolean;\n}\n\n/** Create the temp file (never opening anything already at its name — 'wx' is\n * O_CREAT | O_EXCL, a link included), write it in full, keep the original's\n * owner and mode (or give it `mode`), flush it to disk and close it. */\nfunction fillTemp(temp: TempFile, content: string | Uint8Array, kept: Kept | undefined, mode: number | undefined): void {\n temp.fd = openSync(temp.path, 'wx', mode ?? kept?.mode ?? 0o666);\n temp.created = true;\n writeFileSync(temp.fd, content);\n if (kept) {keepOwnerAndMode(temp.fd, kept);}\n if (mode !== undefined) {fchmodSync(temp.fd, mode);}\n fsyncSync(temp.fd);\n closeSync(temp.fd);\n temp.fd = undefined;\n}\n\n/** Close and remove a temp file after a failure. Never touches a file this\n * write did not create. */\nfunction discardTemp(temp: TempFile): void {\n if (temp.fd !== undefined) {\n try { closeSync(temp.fd); } catch { /* already failing */ }\n }\n if (temp.created) {\n try { unlinkSync(temp.path); } catch { /* already failing */ }\n }\n}\n\n/** Write `content` to `target` atomically: temp file in the same folder,\n * fsync, then — when the file is still what the caller read (`expect`), with\n * the same mode, and still writable — rename over. `target` must already be\n * resolved. */\nfunction replaceAtomically(target: string, content: string | Uint8Array, opts: SafeWriteOptions): void {\n const folder = dirname(target);\n const temp: TempFile = {\n path: join(folder, `.${basename(target).slice(0, 100)}.${process.pid}.${randomBytes(6).toString('hex')}.faf-tmp`),\n created: false,\n };\n const kept = existingFile(target);\n try {\n // A file faf may not write in place (read-only) is not replaced either.\n if (kept) {accessSync(target, constants.W_OK);}\n fillTemp(temp, content, kept, opts.mode);\n assertUnchanged(target, opts.expect, kept);\n renameSync(temp.path, target);\n } catch (e) {\n discardTemp(temp);\n if (e instanceof SafePathError) {throw e;}\n const why = errnoOf(e) ?? (e instanceof Error ? e.message : String(e));\n throw new NotWrittenError(target, `${target}: not written${kept ? '; original kept' : ''} (${why})`, { cause: e });\n }\n syncFolder(folder);\n}\n\n/** A refusal raised while writing: the same SafePathError, marked `onWrite`. */\nfunction atWrite(e: unknown): unknown {\n return e instanceof SafePathError && !e.onWrite ? new SafePathError(e.reason, e.path, e.message, { onWrite: true }) : e;\n}\n\n/**\n * Write a file inside a project, safely: resolved with {@link resolveInside}\n * (a link that leaves the project, dangles, or leads to a file with another\n * name, and anything in `.git`, is refused), then replaced atomically (temp\n * file in the same folder, fsync, rename; the original's permissions — and,\n * where the OS allows, its owner — kept). On any failure the original is\n * untouched and the Error says \"not written; original kept\". With `expect`,\n * a file that changed after the caller read it is not replaced either\n * (SafePathError `changed`); nor is one whose mode changed, or that became\n * read-only, while faf was writing. Returns the real path written — the\n * link's target when `path` is an in-project link.\n */\nexport function safeWriteFile(path: string, content: string | Uint8Array, opts: SafeWriteOptions = {}): string {\n const full = resolve(path);\n let target: string;\n try {\n target = resolveInside(opts.root ?? dirname(full), full, { allowGitHooks: opts.allowGitHooks, allowGitConfig: opts.allowGitConfig });\n } catch (e) {\n throw atWrite(e);\n }\n replaceAtomically(target, content, opts);\n return target;\n}\n\n/** Options for {@link safeReplaceOwned}. */\nexport interface ReplaceOwnedOptions {\n /** The project folder the write must stay inside. Default: the file's own folder. */\n root?: string;\n /** True when the bytes already at the path carry faf's own mark (faf wrote them). */\n owns: (existing: Buffer) => boolean;\n /** faf's mark in words, for the refusal: \"the `_meta[\\\"one.faf/context\\\"]` block\". */\n mark: string;\n /** Replace a file without the mark anyway — the explicit overwrite (`--force`). */\n force?: boolean;\n /** The bytes the caller read there earlier (`null`: no file then). When\n * given, the file must still hold them, else SafePathError `changed`. */\n expect?: string | Uint8Array | null;\n}\n\n/**\n * Write a whole file faf renders (project.html, a Server Card, an A2A card, a\n * `.fafb`), replacing a file already at `path` only when faf can prove it wrote\n * it: its bytes carry faf's own mark (`owns`). A file without the mark is\n * refused — SafePathError `not-owned`: \"<file> has no <mark>, so faf did not\n * write it — faf left it unchanged.\" — and stays byte for byte, unless `force`\n * asks to replace it. The link rules and the atomic write are\n * {@link safeWriteFile}'s, and the write is refused if the file changed on\n * disk after faf read it. Returns the real path written.\n */\nexport function safeReplaceOwned(path: string, content: string | Uint8Array, opts: ReplaceOwnedOptions): string {\n const full = resolve(path);\n const root = opts.root ?? dirname(full);\n const target = resolveInside(root, full);\n const existing = readBytesIfPresent(target);\n if (opts.expect !== undefined) {assertUnchanged(target, opts.expect, undefined);}\n if (existing !== null && opts.force !== true && !opts.owns(existing)) {\n throw new SafePathError('not-owned', full, `${full} has no ${opts.mark}, so faf did not write it — faf left it unchanged.`, { onWrite: true });\n }\n return safeWriteFile(target, content, { root, expect: existing });\n}\n\n/**\n * Create the folder `dir` inside the project folder `root`, with any missing\n * folders between them, and return its real path. `root` itself is the\n * caller's own folder: it is created as named when missing. Below it, faf\n * never creates a folder through a link: an existing folder on the way that\n * is a link leading out of `root` (or a dangling link) is refused, as is any\n * part inside `.git` and anything on the way that is not a folder — so\n * `.github → ~/elsewhere` cannot make faf create `~/elsewhere/workflows`.\n */\nexport function makeDirInside(root: string, dir: string = root): string {\n const top = resolve(root);\n mkdirSync(top, { recursive: true });\n const realRoot = realpath(top);\n const want = resolve(top, dir);\n const rel = relative(top, want);\n if (rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {\n throw new SafePathError('outside', want, `${want} is outside ${realRoot} — refused.`, { onWrite: true });\n }\n let cur = realRoot;\n for (const part of rel.split(/[\\\\/]/).filter(Boolean)) {\n const next = join(cur, part);\n if (inGitDir(next)) {\n throw new SafePathError('git', want, `${want} runs through ${next}, inside .git/ — refused.`, { onWrite: true });\n }\n cur = stepInto(realRoot, want, next);\n }\n return cur;\n}\n\n/** One folder on the way down in makeDirInside: made when missing, followed\n * when it is a link that stays inside `root`, refused otherwise. */\nfunction stepInto(root: string, want: string, next: string): string {\n let st;\n try {\n st = lstatSync(next);\n } catch (e) {\n if (errnoOf(e) !== 'ENOENT') {throw e;}\n mkdirSync(next);\n return next;\n }\n let real = next;\n if (st.isSymbolicLink()) {\n try {\n real = realpath(next);\n } catch {\n throw new SafePathError('dangling', want, `${next} is a link to ${linkText(next)}, which does not exist. faf does not create folders through a link — refused.`, { onWrite: true });\n }\n if (!isInside(root, real)) {\n throw new SafePathError('outside', want, `${next} is a link to ${real}, outside ${root} — refused.`, { onWrite: true });\n }\n if (inGitDir(real)) {\n throw new SafePathError('git', want, `${next} is a link to ${real}, inside .git/ — refused.`, { onWrite: true });\n }\n }\n if (!statSync(real).isDirectory()) {\n throw new SafePathError('not-a-file', want, `${next} is not a folder — refused.`, { onWrite: true });\n }\n return real;\n}\n\n/**\n * Remove a file faf wrote — only when it still holds exactly `expect` (the\n * bytes faf wrote or read there) and is a regular file inside `root` (default:\n * its own folder), out of `.git`. A link is never removed (faf did not make\n * it), and a file whose bytes changed is left as it is (SafePathError\n * `changed`). Returns false when nothing was there.\n */\nexport function safeUnlink(path: string, opts: { root?: string; expect: string | Uint8Array }): boolean {\n const full = resolve(path);\n const realRoot = realpath(resolve(opts.root ?? dirname(full)));\n const folder = realpath(dirname(full));\n if (!isInside(realRoot, folder)) {\n throw new SafePathError('outside', full, `${full} is in ${folder}, outside ${realRoot} — refused.`, { onWrite: true });\n }\n const target = join(folder, basename(full));\n if (inGitDir(target)) {\n throw new SafePathError('git', full, `${full} is inside .git/ — refused.`, { onWrite: true });\n }\n let st;\n try {\n st = lstatSync(target);\n } catch (e) {\n if (errnoOf(e) === 'ENOENT') {return false;}\n throw e;\n }\n if (!st.isFile()) {\n throw new SafePathError('not-a-file', full, `${full} is not a regular file faf wrote — left as it is.`, { onWrite: true });\n }\n assertUnchanged(target, opts.expect, undefined);\n unlinkSync(target);\n return true;\n}\n\n/** The temp folders makeTempDir made in this process — the only ones removeTempDir removes. */\nconst TEMP_DIRS = new Set<string>();\n\n/** The marker file makeTempDir writes into every temp folder it makes, and\n * its exact content: `faf clear` removes only a folder that carries it. */\nexport const TEMP_MARKER = '.faf-temp';\nconst TEMP_MARKER_TEXT = 'faf made this temp folder; `faf clear` removes it.\\n';\n\n/** Make a new temp folder for faf's own use — `<os temp>/<prefix>XXXXXX`, a\n * fresh name no one else can have made (mkdtemp) — write faf's marker file\n * into it ({@link TEMP_MARKER}), and return its real path. Anything faf puts\n * there (a clone, say) goes in a subfolder, beside the marker. */\nexport function makeTempDir(prefix: string): string {\n const dir = realpath(mkdtempSync(join(tmpdir(), prefix)));\n TEMP_DIRS.add(dir);\n const fd = openSync(join(dir, TEMP_MARKER), 'wx', 0o644);\n try {\n writeFileSync(fd, TEMP_MARKER_TEXT);\n } finally {\n closeSync(fd);\n }\n return dir;\n}\n\n/** Remove a temp folder {@link makeTempDir} made in this process, with what is\n * in it. Any other folder is refused (an Error; nothing removed). */\nexport function removeTempDir(dir: string): void {\n if (!TEMP_DIRS.has(dir)) {throw new Error(`${dir} is not a temp folder faf made — not removed`);}\n rmSync(dir, { recursive: true, force: true });\n TEMP_DIRS.delete(dir);\n}\n\n/** True when the folder `dir` carries makeTempDir's marker: a regular file\n * (never a link) holding exactly the marker text. */\nfunction hasTempMarker(dir: string): boolean {\n const marker = join(dir, TEMP_MARKER);\n try {\n if (!lstatSync(marker).isFile()) {return false;}\n return readFileSync(marker, 'utf-8') === TEMP_MARKER_TEXT;\n } catch {\n return false;\n }\n}\n\nconst escapeRe = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n/**\n * Remove faf's own temp folders left behind by earlier runs (`faf clear`):\n * only folders faf made — entries of the OS temp folder named exactly as\n * mkdtemp names them (`prefix` plus six letters or digits), that are real\n * folders (a link is left alone), belong to this user and carry the marker\n * file {@link makeTempDir} writes into each one. A folder of yours that only\n * starts with the prefix (`faf-git-my-notes`) stays. Returns how many were\n * removed. A folder that cannot be read or removed is skipped.\n */\nexport function removeStaleTempDirs(prefix: string): number {\n const tmp = tmpdir();\n const uid = typeof process.getuid === 'function' ? process.getuid() : undefined;\n const shape = new RegExp(`^${escapeRe(prefix)}[A-Za-z0-9]{6}$`);\n let removed = 0;\n for (const entry of readdirSync(tmp)) {\n if (!shape.test(entry)) {continue;}\n const p = join(tmp, entry);\n try {\n const st = lstatSync(p);\n if (!st.isDirectory() || (uid !== undefined && st.uid !== uid) || !hasTempMarker(p)) {continue;}\n rmSync(p, { recursive: true, force: true });\n removed++;\n } catch {\n /* not ours to remove, or already gone */\n }\n }\n return removed;\n}\n",
86
86
  "/**\n * Shape guards — never spread a scalar.\n *\n * `{ ...'old-init' }` is `{ 0: 'o', 1: 'l', … }` and `{ ...[a, b] }` is\n * `{ 0: a, 1: b }`: spreading a value that is not a mapping silently turns the\n * user's text into index keys, and the next write saves them. Every place that\n * spreads or descends into a parsed .faf / .fafm value checks its shape first\n * and refuses with an Error that names what it found.\n */\nimport { SafePathError } from './safe-write.js';\n\n/** True for a YAML mapping: a plain object, not a list. */\nexport function isMapping(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** Plain words for a value's YAML shape, for error messages: `a string (\"old-init\")`, `a list (2 items)`. */\nexport function describeShape(value: unknown): string {\n if (Array.isArray(value)) {return `a list (${value.length} item${value.length === 1 ? '' : 's'})`;}\n if (value === null || value === undefined) {return 'empty';}\n if (typeof value === 'string') {\n const shown = value.length > 40 ? `${value.slice(0, 40)}…` : value;\n return `a string (${JSON.stringify(shown)})`;\n }\n if (typeof value === 'object') {return 'a mapping';}\n return `a ${typeof value} (${String(value)})`;\n}\n\n/**\n * A parsed .faf document as a mapping. An empty document reads as `{}`; a\n * scalar or a list throws a SafePathError (`not-yaml`), so the CLI prints it\n * as one line — faf never rewrites a file whose shape it does not\n * understand. `source` names the file (or caller) in the error.\n */\nexport function asFafMapping(value: unknown, source: string): Record<string, unknown> {\n if (value === null || value === undefined) {return {};}\n if (!isMapping(value)) {\n throw new SafePathError(\n 'not-yaml',\n source,\n `${source}: a .faf must be a YAML mapping (key: value pairs), but this one is ${describeShape(value)}. ` +\n 'faf left it unchanged — fix it by hand.',\n );\n }\n return value;\n}\n",
87
87
  "/**\n * Document-preserving YAML edits — how faf changes a .faf or .fafm that is\n * already on disk.\n *\n * The file is parsed with yaml's `parseDocument`, the change is made on the\n * Document through its node APIs (`set` / `setIn` / `delete`), and only the\n * text of the nodes that changed is rewritten. Every other byte stays as it\n * was: comments, blank lines, key order, quoting, scalar source text (`1.10`,\n * `0x1F90`, a 20-digit integer), anchors and aliases, unknown keys, CRLF line\n * ends and a BOM.\n *\n * Safety net: the spliced text is parsed again and must hold the same data as\n * the changed Document and serialise the same way (comments, styles, anchors;\n * blank lines aside). If it does not (a shape the splicer does not handle),\n * faf writes the Document's own serialisation instead — `toString({\n * lineWidth: 0 })`, which still keeps comments, anchors, unknown keys and the\n * source text of every number it did not change. A change that leaves the\n * data as it was returns the original text untouched — even when that\n * serialisation would differ — so callers skip the write.\n */\n\nimport {\n Document,\n YAMLMap,\n type Alias,\n YAMLSeq,\n isAlias,\n isCollection,\n isMap,\n isNode,\n isScalar,\n isSeq,\n parseDocument,\n type DocumentOptions,\n type Node,\n type Pair,\n type ParseOptions,\n type Scalar,\n type ScalarTag,\n type SchemaOptions,\n type Tags,\n type ToStringOptions,\n} from 'yaml';\nimport { isMapping } from './shape.js';\n\ntype YamlOptions = ParseOptions & DocumentOptions & SchemaOptions;\n\n/** The result of {@link editYaml}. */\nexport interface YamlEditResult {\n /** The new text — the original text when nothing changed. */\n text: string;\n /** False when the change left the document as it was. */\n changed: boolean;\n}\n\n// ─── Scalar source text ──────────────────────────────────────────────────────\n\nconst NUMBER_TAGS = new Set(['tag:yaml.org,2002:int', 'tag:yaml.org,2002:float']);\n\nfunction isScalarTag(tag: Tags[number]): tag is ScalarTag {\n return typeof tag === 'object' && tag.collection === undefined;\n}\n\n/** The number as it was written (`0x1F90`, `12345678901234567890`, `1e3`),\n * when the node still holds the value that text parses to. */\nfunction writtenNumber(node: Scalar, tags: readonly ScalarTag[]): string | undefined {\n const src = node.source;\n if (typeof src !== 'string' || src.includes('\\n') || typeof node.value !== 'number') {return undefined;}\n const tag = tags.find(t => t.default === true && t.test?.test(src));\n if (!tag || !NUMBER_TAGS.has(tag.tag)) {return undefined;}\n let parsed: unknown;\n try {\n parsed = tag.resolve(src, () => undefined, {});\n } catch {\n return undefined;\n }\n return Object.is(isScalar(parsed) ? parsed.value : parsed, node.value) ? src : undefined;\n}\n\n/** The core schema with number tags that re-emit an unchanged number's own\n * text (yaml would print `0x1F90` as `0x1f90` and round a 20-digit integer). */\nfunction keepNumberText(tags: Tags): Tags {\n const scalars = tags.filter(isScalarTag);\n return tags.map(tag => {\n if (!isScalarTag(tag) || !NUMBER_TAGS.has(tag.tag) || !tag.stringify) {return tag;}\n const inner = tag.stringify;\n return {\n ...tag,\n stringify: (item, ctx, onComment, onChompKeep) =>\n writtenNumber(item, scalars) ?? inner(item, ctx, onComment, onChompKeep),\n };\n });\n}\n\n/** Parse options for every document faf edits. */\nexport const EDIT_OPTIONS: YamlOptions = { keepSourceTokens: true, customTags: keepNumberText };\n\n/** What one `key:` line and the line under it say about the file's\n * indentation: a key step, or whether lists under keys are indented. */\nfunction indentHint(line: string, next: string): { indent?: number; indentSeq?: boolean } {\n const parent = /^( *)[^\\s#-][^#]*?:[ \\t]*(?:#.*)?$/.exec(line);\n const child = /^( *)(\\S)/.exec(next);\n if (!parent || !child || child[2] === '#') {return {};}\n const step = child[1].length - parent[1].length;\n if (child[2] === '-') {return step >= 0 ? { indentSeq: step > 0 } : {};}\n return step >= 1 && step <= 8 ? { indent: step } : {};\n}\n\n/** How the file indents: the step under a `key:` line (default 2), and whether\n * a list under a key is indented (`key:\\n - a`, the default) or not. */\nfunction styleOf(src: string): { indent: number; indentSeq: boolean } {\n const lines = src.split(/\\r?\\n/);\n let indent: number | undefined;\n let indentSeq: boolean | undefined;\n for (let i = 0; i + 1 < lines.length; i++) {\n const hint = indentHint(lines[i], lines[i + 1]);\n indent ??= hint.indent;\n indentSeq ??= hint.indentSeq;\n }\n return { indent: indent ?? 2, indentSeq: indentSeq ?? true };\n}\n\n/** Parse `src` for editing; a file that is not valid YAML is refused (an\n * Error whose `cause` is yaml's YAMLParseError, with its line). */\nexport function parseForEdit(src: string, name: string): Document {\n const doc = parseDocument(src, EDIT_OPTIONS);\n if (doc.errors.length > 0) {\n const why = doc.errors[0].message.split('\\n')[0];\n throw new Error(`${name}: not valid YAML (${why}) — faf left it unchanged.`, { cause: doc.errors[0] });\n }\n return doc;\n}\n\n// ─── Splicing ────────────────────────────────────────────────────────────────\n\ninterface Edit {\n start: number;\n end: number;\n text: string;\n seq: number;\n}\n\ninterface Ctx {\n src: string;\n eol: string;\n edits: Edit[];\n piece: ToStringOptions;\n}\n\ntype Slot =\n | { kind: 'value'; key: unknown; col: number }\n | { kind: 'item'; col: number }\n | { kind: 'root' };\n\nfunction push(ctx: Ctx, start: number, end: number, text: string): void {\n ctx.edits.push({ start, end, text, seq: ctx.edits.length });\n}\n\nfunction lineStart(src: string, pos: number): number {\n return src.lastIndexOf('\\n', pos - 1) + 1;\n}\n\n/** The end of the line `pos` is on, after its line break (or the end of text).\n * `pos` already at the start of a line is returned as is. */\nfunction lineEnd(src: string, pos: number): number {\n if (pos > 0 && src[pos - 1] === '\\n') {return pos;}\n const nl = src.indexOf('\\n', pos);\n return nl < 0 ? src.length : nl + 1;\n}\n\n/** `pos` without the line break that ends just before it. */\nfunction beforeBreak(src: string, pos: number): number {\n let q = pos;\n if (src[q - 1] === '\\n') {\n q--;\n if (src[q - 1] === '\\r') {q--;}\n }\n return q;\n}\n\n/** Neither null nor undefined. */\nfunction present<T>(v: T | null | undefined): v is T {\n return v !== null && v !== undefined;\n}\n\nfunction rangeOf(node: unknown): [number, number, number] | undefined {\n const r = isNode(node) ? (node as Node).range : undefined;\n return r ? [r[0], r[1], r[2]] : undefined;\n}\n\n/** A node `b` in the changed Document is the node `a` of the original when it\n * is a clone of it: same class, same source range. New nodes have no range. */\nfunction sameOrigin(a: unknown, b: unknown): boolean {\n const ra = rangeOf(a);\n const rb = rangeOf(b);\n return !!ra && !!rb && ra[0] === rb[0] && ra[1] === rb[1] && ra[2] === rb[2] &&\n (a as object).constructor === (b as object).constructor;\n}\n\nfunction isBlockNode(node: unknown): boolean {\n if (isScalar(node)) {return node.type === 'BLOCK_LITERAL' || node.type === 'BLOCK_FOLDED';}\n return isCollection(node) && !node.flow;\n}\n\ninterface Trivia {\n comment?: string | null;\n commentBefore?: string | null;\n spaceBefore?: boolean;\n anchor?: string;\n tag?: string;\n}\n\nfunction sameTrivia(a: Trivia, b: Trivia): boolean {\n return a.anchor === b.anchor && a.tag === b.tag && a.comment === b.comment &&\n a.commentBefore === b.commentBefore && !!a.spaceBefore === !!b.spaceBefore;\n}\n\nfunction sameScalar(a: Scalar, b: Scalar): boolean {\n return Object.is(a.value, b.value) && a.type === b.type && a.format === b.format &&\n a.minFractionDigits === b.minFractionDigits && sameTrivia(a, b);\n}\n\n/** Render `node` inside a one-item container and return what follows the\n * container's own prefix (`k:` or `-`). Continuation lines are shifted to\n * column `col`. `inline` is true for a single line that follows the prefix\n * after one space. */\nfunction render(ctx: Ctx, build: (doc: Document) => YAMLMap | YAMLSeq, prefix: number, col: number): { inline: boolean; text: string } {\n const doc = new Document(undefined, EDIT_OPTIONS);\n doc.contents = build(doc);\n const out = doc.toString(ctx.piece).replace(/\\n+$/, '');\n const rest = out.slice(prefix);\n const inline = rest.startsWith(' ') && !rest.includes('\\n');\n const pad = ' '.repeat(col);\n const text = rest.replace(/\\n(?=.)/g, `\\n${pad}`).replace(/\\n/g, ctx.eol);\n return { inline, text: inline ? rest.slice(1) : text };\n}\n\n/** `value` as the value of a pair whose key sits at column `col`. */\nfunction renderValue(ctx: Ctx, value: unknown, col: number): { inline: boolean; text: string } {\n return render(ctx, doc => {\n const map = new YAMLMap();\n map.items.push(doc.createPair('k', value));\n return map;\n }, 2, col);\n}\n\n/** `value` as a list item whose `-` sits at column `col` (the text after `- `). */\nfunction renderItem(ctx: Ctx, value: unknown, col: number): { inline: boolean; text: string } | null {\n const piece = render(ctx, () => {\n const seq = new YAMLSeq();\n seq.items.push(value);\n return seq;\n }, 1, col);\n if (piece.inline) {return piece;}\n return piece.text.startsWith(' ') ? { inline: false, text: piece.text.slice(1) } : null;\n}\n\n/** A copy of a node without its trailing comment, for rendering its value alone. */\nfunction valueOnly(node: unknown): unknown {\n if (!isNode(node) || !present((node as Trivia).comment)) {return node;}\n const copy = node.clone() as Node & Trivia;\n copy.comment = undefined;\n return copy;\n}\n\n/** `b` without the anchor and tag it shares with `a`. A node's range starts\n * at its value — `&g` and `!!str` sit in front of it and stay in the text —\n * so the new value is rendered without them, and only the value text inside\n * the range changes (`goal: &g Old` → `goal: &g New`, not `&g &g New`). */\nfunction withoutSharedProps(a: unknown, b: unknown): unknown {\n if (!isNode(a) || !isNode(b)) {return b;}\n const ta = a as Trivia;\n const tb = b as Trivia;\n if ((!ta.anchor && !ta.tag) || ta.anchor !== tb.anchor || ta.tag !== tb.tag) {return b;}\n const copy = b.clone() as Node & Trivia;\n copy.anchor = undefined;\n copy.tag = undefined;\n return copy;\n}\n\n/** Just after the `:` that follows `key`, or -1. */\nfunction afterColon(src: string, key: unknown): number {\n const r = rangeOf(key);\n if (!r) {return -1;}\n let i = r[2];\n while (src[i] === ' ' || src[i] === '\\t') {i++;}\n return src[i] === ':' ? i + 1 : -1;\n}\n\n/** Text for an empty value (`key:` with nothing after it) that gains one. */\nfunction fillEmpty(src: string, at: number, text: string): string {\n const lead = src[at - 1] === ' ' || src[at - 1] === '\\t' ? '' : ' ';\n const tail = src[at] === '#' ? ' ' : '';\n return `${lead}${text}${tail}`;\n}\n\n/** How a replaced node's old text ends, and what its new text looks like. */\ninterface Replacement {\n range: [number, number, number];\n /** The old node's trailing comment stays where it is. */\n keepTail: boolean;\n /** The new node's own trailing comment (rendered in `piece` when the tail goes). */\n newComment: string | null | undefined;\n piece: { inline: boolean; text: string };\n}\n\n/** How `a` is replaced by `b`. `fromColon`: the new text starts right after\n * the key's colon, over the node's anchor and tag too, so they are rendered\n * with it; otherwise the new text starts at the node's range, after them. */\nfunction planReplace(ctx: Ctx, a: unknown, b: unknown, slot: Slot, fromColon = false): Replacement | null {\n const range = rangeOf(a);\n if (!range || slot.kind === 'root') {return null;}\n const oldComment = (a as Trivia).comment;\n const newComment = isNode(b) ? (b as Trivia).comment : undefined;\n const keepTail = !present(oldComment) || oldComment === newComment;\n const valueText = keepTail ? valueOnly(b) : b;\n const shown = fromColon ? valueText : withoutSharedProps(a, valueText);\n const piece = slot.kind === 'value' ? renderValue(ctx, shown, slot.col) : renderItem(ctx, shown, slot.col);\n return piece ? { range, keepTail, newComment, piece } : null;\n}\n\n/** Where the old node's text ends: before its trailing comment when that\n * stays, after it when the comment goes with the node. */\nfunction replaceEnd(src: string, a: unknown, r: [number, number, number], keepTail: boolean): number {\n if (!keepTail) {return beforeBreak(src, lineEnd(src, r[2]));}\n return isBlockNode(a) ? beforeBreak(src, r[1]) : r[1];\n}\n\n/** Replace the node `a` (a pair's value, or a list item) with `b`; `addComment`\n * is a line comment the unchanged-style scalar gains. */\nfunction replace(ctx: Ctx, a: unknown, b: unknown, slot: Slot, addComment?: string): boolean {\n const inRange = planReplace(ctx, a, b, slot);\n if (!inRange) {return false;}\n const end = replaceEnd(ctx.src, a, inRange.range, inRange.keepTail);\n if (inRange.piece.inline && (!isBlockNode(a) || slot.kind === 'item')) {\n replaceInline(ctx, inRange, end, slot, addComment);\n return true;\n }\n // A multi-line value (or a block node replaced): no comment can be carried.\n const tailComment = inRange.keepTail ? (a as Trivia).comment : inRange.newComment;\n if (addComment !== undefined || present(tailComment)) {return false;}\n // A pair's value is rewritten from its key's colon, anchor and tag included.\n const plan = slot.kind === 'value' ? planReplace(ctx, a, b, slot, true) : inRange;\n return plan !== null && replaceBlock(ctx, plan.range[0], end, plan.piece, slot);\n}\n\n/** One line in, one line out: the new value takes the old value's place. */\nfunction replaceInline(ctx: Ctx, plan: Replacement, end: number, slot: Slot, addComment?: string): void {\n const [start, valueEnd] = plan.range;\n const empty = start === valueEnd && slot.kind === 'value';\n const text = empty ? fillEmpty(ctx.src, start, plan.piece.text) : plan.piece.text;\n push(ctx, start, end, text + (addComment === undefined ? '' : ` #${addComment}`));\n}\n\nfunction replaceBlock(ctx: Ctx, start: number, end: number, piece: { inline: boolean; text: string }, slot: Slot): boolean {\n if (slot.kind === 'item') {\n push(ctx, start, end, piece.text);\n return true;\n }\n if (slot.kind !== 'value') {return false;}\n const colon = afterColon(ctx.src, slot.key);\n if (colon < 0) {return false;}\n push(ctx, colon, end, piece.inline ? ` ${piece.text}` : piece.text);\n return true;\n}\n\n/** Same anchor, tag, leading comment and blank line (the trailing comment aside). */\nfunction sameLead(a: Trivia, b: Trivia): boolean {\n return sameTrivia({ ...a, comment: undefined }, { ...b, comment: undefined });\n}\n\n/** The line comment a scalar gains (it had none, the change gives it one). */\nfunction gainedComment(a: Scalar, b: Scalar): string | undefined {\n if (present(a.comment) || typeof b.comment !== 'string') {return undefined;}\n return b.comment.includes('\\n') ? undefined : b.comment;\n}\n\nfunction diffScalar(ctx: Ctx, a: Scalar, b: Scalar, slot: Slot): boolean {\n if (sameScalar(a, b)) {return true;}\n if (!sameLead(a, b)) {return false;}\n const added = gainedComment(a, b);\n if (a.comment !== b.comment && added === undefined) {return false;}\n return replace(ctx, a, b, slot, added);\n}\n\nfunction diffCollection(ctx: Ctx, a: YAMLMap | YAMLSeq, b: YAMLMap | YAMLSeq, slot: Slot): boolean {\n if (!sameTrivia(a, b) || !!a.flow !== !!b.flow) {return false;}\n if (a.flow) {\n return renderValue(ctx, a, 0).text === renderValue(ctx, b, 0).text || replace(ctx, a, b, slot);\n }\n // Every entry gone: the value becomes `{}` / `[]`, not an empty `key:`.\n if (b.items.length === 0) {return replace(ctx, a, b, slot);}\n return isMap(a) ? diffMap(ctx, a, b as YAMLMap) : diffSeq(ctx, a as YAMLSeq, b as YAMLSeq);\n}\n\nfunction diffNode(ctx: Ctx, a: unknown, b: unknown, slot: Slot): boolean {\n if (!sameOrigin(a, b)) {return replace(ctx, a, b, slot);}\n if (isScalar(a)) {return diffScalar(ctx, a, b as Scalar, slot);}\n if (isAlias(a)) {\n return (isAlias(b) && a.source === b.source && sameTrivia(a, b)) || replace(ctx, a, b, slot);\n }\n if (!isCollection(a) || !isCollection(b)) {return false;}\n return diffCollection(ctx, a as YAMLMap | YAMLSeq, b as YAMLMap | YAMLSeq, slot);\n}\n\n/** Column of a block collection's entries (first key, or first `-`). */\nfunction entryColumn(src: string, pos: number): number {\n return pos - lineStart(src, pos);\n}\n\n/** True when only spaces (and, for a list item, its `-`) precede `pos` on its line. */\nfunction startsLine(src: string, pos: number, dash: boolean): boolean {\n const lead = src.slice(lineStart(src, pos), pos);\n return dash ? /^ *- +$/.test(lead) || /^ *$/.test(lead) : /^ *$/.test(lead);\n}\n\nfunction hasLeadingTrivia(node: unknown): boolean {\n return isNode(node) && (present((node as Trivia).commentBefore) || !!(node as Trivia).spaceBefore);\n}\n\n/** End of an entry's last line (after its line break). */\nfunction entryEnd(ctx: Ctx, value: unknown, key?: unknown): number {\n const r = rangeOf(value) ?? rangeOf(key);\n return r ? lineEnd(ctx.src, r[2]) : -1;\n}\n\nfunction renderEntries(ctx: Ctx, container: YAMLMap | YAMLSeq, col: number): string {\n const doc = new Document(undefined, EDIT_OPTIONS);\n doc.contents = container;\n const pad = ' '.repeat(col);\n const lines = doc.toString(ctx.piece).replace(/\\n+$/, '').split('\\n');\n return lines.map(line => (line ? pad + line : line)).join(ctx.eol) + ctx.eol;\n}\n\n/** Insert text for new entries at `at` (a line start, or the end of a file\n * without a final line break — which then still ends without one). */\nfunction insertAt(ctx: Ctx, at: number, body: string): void {\n const openEnd = at === ctx.src.length && at > 0 && !ctx.src.endsWith('\\n');\n push(ctx, at, at, openEnd ? ctx.eol + body.slice(0, -ctx.eol.length) : body);\n}\n\n/** Insert new entries after the entry ending at `afterEnd` (or before the\n * first entry, `first`, when -1). */\nfunction insertEntries(ctx: Ctx, first: unknown, afterEnd: number, container: YAMLMap | YAMLSeq, col: number, dash: boolean): boolean {\n let at = afterEnd;\n if (at < 0) {\n const r = rangeOf(first);\n if (!r || hasLeadingTrivia(first) || !startsLine(ctx.src, r[0], dash)) {return false;}\n at = lineStart(ctx.src, r[0]);\n }\n insertAt(ctx, at, renderEntries(ctx, container, col));\n return true;\n}\n\n/** Start of the lines that belong to an entry: its own line, plus the comment\n * lines and blank lines the parser attached before it. */\nfunction entryStart(src: string, head: unknown, pos: number): number {\n let start = lineStart(src, pos);\n const t = head as Trivia;\n const comments = present(t.commentBefore);\n let blank = !!t.spaceBefore;\n while (start > 0) {\n const prev = lineStart(src, start - 1);\n const line = src.slice(prev, start).trim();\n if (comments && line.startsWith('#')) {\n start = prev;\n } else if (blank && line === '') {\n start = prev;\n blank = false;\n } else {\n break;\n }\n }\n return start;\n}\n\nfunction deleteEntry(ctx: Ctx, head: unknown, value: unknown, dash: boolean): boolean {\n const r = rangeOf(head);\n if (!r || !startsLine(ctx.src, r[0], dash)) {return false;}\n const end = entryEnd(ctx, value, head);\n if (end < 0) {return false;}\n push(ctx, entryStart(ctx.src, head, r[0]), end, '');\n return true;\n}\n\n/** Finds, for a node of the changed Document, the index of the original\n * entry it was cloned from (-1 for a new node). */\nfunction originIndex(items: readonly unknown[], pick: (x: unknown) => unknown): (b: unknown) => number {\n const at = new Map<string, number>();\n const id = (node: unknown): string | undefined => {\n const r = rangeOf(node);\n return r ? r.join(':') : undefined;\n };\n items.forEach((item, i) => {\n const key = id(pick(item));\n if (key !== undefined && !at.has(key)) {at.set(key, i);}\n });\n return (b) => {\n const key = id(pick(b));\n const i = key === undefined ? undefined : at.get(key);\n return i !== undefined && sameOrigin(pick(items[i]), pick(b)) ? i : -1;\n };\n}\n\nfunction sameKey(a: unknown, b: unknown): boolean {\n return isScalar(a) && isScalar(b) ? sameScalar(a, b) : a === b;\n}\n\nfunction diffMap(ctx: Ctx, a: YAMLMap, b: YAMLMap): boolean {\n const firstKey = a.items[0]?.key;\n const kr = rangeOf(firstKey);\n if (!kr) {return false;}\n const col = entryColumn(ctx.src, kr[0]);\n const matched = new Set<number>();\n const flush = (pending: Pair[], last: number): boolean => {\n if (pending.length === 0) {return true;}\n const container = new YAMLMap();\n container.items.push(...pending);\n const end = last < 0 ? -1 : entryEnd(ctx, a.items[last].value, a.items[last].key);\n return insertEntries(ctx, firstKey, end, container, col, false);\n };\n const origin = originIndex(a.items, p => (p as Pair).key);\n let last = -1;\n let pending: Pair[] = [];\n for (const bp of b.items) {\n const ai = origin(bp);\n if (ai < 0) {\n pending.push(bp);\n continue;\n }\n if (ai <= last || !flush(pending, last) || !sameKey(a.items[ai].key, bp.key)) {return false;}\n pending = [];\n if (!diffNode(ctx, a.items[ai].value, bp.value, { kind: 'value', key: a.items[ai].key, col })) {return false;}\n matched.add(ai);\n last = ai;\n }\n if (!flush(pending, last)) {return false;}\n return a.items.every((p, i) => matched.has(i) || deletePair(ctx, a, i));\n}\n\n/** Remove pair `i` of `map`. The first pair of a map that is a list item\n * (`- id: x`) shares its line with the `-`: the next key moves up to it. */\nfunction deletePair(ctx: Ctx, map: YAMLMap, i: number): boolean {\n const pair = map.items[i];\n const r = rangeOf(pair.key);\n if (!r) {return false;}\n if (startsLine(ctx.src, r[0], false)) {return deleteEntry(ctx, pair.key, pair.value, false);}\n const next = map.items[i + 1];\n const nr = rangeOf(next?.key);\n if (i !== 0 || !nr || hasLeadingTrivia(pair.key) || hasLeadingTrivia(next.key)) {return false;}\n push(ctx, r[0], nr[0], '');\n return true;\n}\n\nfunction diffSeq(ctx: Ctx, a: YAMLSeq, b: YAMLSeq): boolean {\n const sr = rangeOf(a);\n if (!sr || a.items.length === 0) {return false;}\n const col = entryColumn(ctx.src, sr[0]);\n const matched = new Set<number>();\n const flush = (pending: unknown[], last: number): boolean => {\n if (pending.length === 0) {return true;}\n const container = new YAMLSeq();\n container.items.push(...pending);\n const end = last < 0 ? -1 : entryEnd(ctx, a.items[last]);\n return insertEntries(ctx, a.items[0], end, container, col, true);\n };\n const origin = originIndex(a.items, x => x);\n let last = -1;\n let pending: unknown[] = [];\n for (const bi of b.items) {\n const ai = origin(bi);\n if (ai < 0) {\n pending.push(bi);\n continue;\n }\n if (ai <= last || !flush(pending, last)) {return false;}\n pending = [];\n if (!diffNode(ctx, a.items[ai], bi, { kind: 'item', col })) {return false;}\n matched.add(ai);\n last = ai;\n }\n if (!flush(pending, last)) {return false;}\n return a.items.every((item, i) => matched.has(i) || deleteEntry(ctx, item, item, true));\n}\n\n/** Apply non-overlapping edits, last first. Returns null on an overlap. */\nfunction applyEdits(src: string, edits: Edit[]): string | null {\n const sorted = [...edits].sort((x, y) => y.start - x.start || y.end - x.end || y.seq - x.seq);\n let out = src;\n let bound = Infinity;\n for (const e of sorted) {\n if (e.end > bound) {return null;}\n out = out.slice(0, e.start) + e.text + out.slice(e.end);\n bound = e.start;\n }\n return out;\n}\n\n/** An empty (or comments-only) document gains its first content. */\nfunction fillDocument(ctx: Ctx, base: Document, b: unknown): boolean {\n if (!isMap(b) && !isSeq(b)) {return false;}\n const lead = ctx.src.length > 0 && !ctx.src.endsWith('\\n') ? ctx.eol : '';\n const gap = base.commentBefore ? ctx.eol : '';\n push(ctx, ctx.src.length, ctx.src.length, lead + gap + renderEntries(ctx, b, 0));\n return true;\n}\n\nfunction spliceRoot(ctx: Ctx, base: Document, next: Document): boolean {\n if (base.commentBefore !== next.commentBefore || base.comment !== next.comment) {return false;}\n const a = base.contents;\n const b = next.contents;\n if (!present(a)) {return !present(b) || fillDocument(ctx, base, b);}\n return present(b) && diffNode(ctx, a, b, { kind: 'root' });\n}\n\nfunction splice(src: string, base: Document, next: Document, eol: string, piece: ToStringOptions): string | null {\n const ctx: Ctx = { src, eol, edits: [], piece };\n if (!spliceRoot(ctx, base, next)) {return null;}\n return applyEdits(src, ctx.edits);\n}\n\n/** Blank lines carry no data outside block scalars, and the parser may pin a\n * blank line to a neighbouring node; the data itself is compared separately. */\nconst withoutBlankLines = (text: string): string => text.replace(/^[ \\t]*\\n/gm, '');\n\n/** True when `text` parses to the same data as `next`, with the same comments,\n * styles and structure (its serialisation equals `want`, blank lines aside). */\nfunction reads(text: string, next: Document, want: string, opts: ToStringOptions): boolean {\n const doc = parseDocument(text, EDIT_OPTIONS);\n if (doc.errors.length > 0 || !sameJs(doc.toJS(), next.toJS())) {return false;}\n const got = doc.toString(opts);\n return got === want || withoutBlankLines(got) === withoutBlankLines(want);\n}\n\n/**\n * Parse `text`, let `mutate` change the Document, and return the new text with\n * every byte outside the changed nodes kept. `name` labels errors (a file that\n * is not valid YAML is refused — nothing is guessed). When the change leaves\n * the data as it was (the same values, whatever the nodes or their order),\n * the original `text` is returned with `changed: false`.\n */\nexport function editYaml(text: string, mutate: (doc: Document) => void, name = 'YAML'): YamlEditResult {\n const { text: out, changed } = editYamlDetailed(text, mutate, name);\n return { text: out, changed };\n}\n\n/** {@link editYaml}, also saying how the text was made: `spliced` is true when\n * only the changed nodes were rewritten, false when faf fell back to the\n * Document's own serialisation (or nothing changed). For tests. */\nexport function editYamlDetailed(\n text: string,\n mutate: (doc: Document) => void,\n name = 'YAML',\n): YamlEditResult & { spliced: boolean } {\n const bom = text.startsWith('\\uFEFF') ? '\\uFEFF' : '';\n const src = text.slice(bom.length);\n const base = parseForEdit(src, name);\n const next = cloneDocument(base);\n mutate(next);\n const unchanged = { text, changed: false, spliced: false };\n // A change that leaves the data as it was writes nothing — not even the\n // Document's own serialisation, which could differ from the file's text.\n if (sameJs(next.toJS(), base.toJS())) {return unchanged;}\n const canon: ToStringOptions = { lineWidth: 0, ...styleOf(src) };\n const want = next.toString(canon);\n if (want === base.toString(canon)) {return unchanged;}\n const eol = src.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const candidate = splice(src, base, next, eol, { ...canon, verifyAliasOrder: false });\n const spliced = candidate !== null && reads(candidate, next, want, canon);\n const out = spliced && candidate !== null ? candidate : want.replace(/\\r?\\n/g, eol);\n return { text: bom + out, changed: bom + out !== text, spliced };\n}\n\n/** `doc.clone()`, keeping the document-end marker (`...`): yaml's clone\n * copies the `%YAML` directive and the `---` start marker but drops `...`,\n * so every edit of a file ending in `...` fell back to a full rewrite. */\nfunction cloneDocument(doc: Document): Document {\n const copy = doc.clone();\n if (doc.directives && copy.directives) {copy.directives.docEnd = doc.directives.docEnd;}\n return copy;\n}\n\n// ─── Applying plain data to a Document ──────────────────────────────────────\n\n/** Deep equality of plain parsed values (mappings compared key by key). */\nexport function sameJs(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) {return true;}\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.length === b.length && a.every((x, i) => sameJs(x, b[i]));\n }\n if (isMapping(a) && isMapping(b)) {\n const ka = Object.keys(a);\n return ka.length === Object.keys(b).length && ka.every(k => k in b && sameJs(a[k], b[k]));\n }\n return false;\n}\n\nfunction keyText(pair: Pair): string | undefined {\n const k = isScalar(pair.key) ? pair.key.value : pair.key;\n return typeof k === 'string' || typeof k === 'number' || typeof k === 'boolean' ? String(k) : undefined;\n}\n\nfunction findPair(map: YAMLMap, key: string): Pair | undefined {\n return map.items.find(p => keyText(p) === key);\n}\n\nfunction nodeJs(doc: Document, node: unknown): unknown {\n return isNode(node) ? node.toJS(doc) : node;\n}\n\n/** How {@link applyMapData} treats keys the data does not name. */\nexport interface ApplyOptions {\n /** Remove keys of a mapping that the data leaves out (or sets `undefined`).\n * Default false: a key the data does not mention stays exactly as it is. */\n prune?: boolean;\n /** Leave every alias (`*name`) as written, whatever the data holds there:\n * it is never expanded or replaced (see {@link keptAliases}). */\n keepAliases?: boolean;\n}\n\n/** The node already holds `value`, or is an alias kept as written. */\nfunction staysAsWritten(doc: Document, node: unknown, value: unknown, opts: ApplyOptions): boolean {\n return (opts.keepAliases === true && isAlias(node)) || sameJs(nodeJs(doc, node), value);\n}\n\n/**\n * Set `node` to hold `value` with the fewest changes: a mapping is updated key\n * by key, a list item by item (items still there are kept as they are), a\n * scalar in place (its comment, quoting and position kept). Returns the node\n * to store — `node` itself, or a new node when the shape changed.\n */\nexport function applyValue(doc: Document, node: unknown, value: unknown, opts: ApplyOptions = {}): unknown {\n if (staysAsWritten(doc, node, value, opts)) {return node;}\n if (isMapping(value) && isMap(node)) {\n applyMapData(doc, node, value, opts);\n return node;\n }\n if (Array.isArray(value) && isSeq(node)) {\n applySeqData(doc, node, value, opts);\n return node;\n }\n if (!isMapping(value) && !Array.isArray(value) && isScalar(node)) {\n node.value = value;\n return node;\n }\n return withCommentOf(node, doc.createNode(value));\n}\n\n/** `created`, which takes the place of `old`, with `old`'s comments: a\n * scalar or an alias keeps its line comment (`summary: *g # note` →\n * `summary: New # note`); a scalar lifted to a mapping or a list\n * (`project: demo # note`, `stack: # note`) keeps it as a comment line above\n * the new entries, or on the key line when the new value is empty\n * (`stack: {} # note`). */\nfunction withCommentOf(old: unknown, created: Node): Node {\n if (!isScalar(old) && !isAlias(old)) {return created;}\n const was = old as Trivia;\n const target = created as Node & Trivia;\n if (isCollection(created) && created.items.length > 0 && !created.flow) {\n target.commentBefore = joinComments(target.commentBefore, was.commentBefore, was.comment);\n return created;\n }\n if (isCollection(created)) {created.flow = true;}\n target.comment = joinComments(target.comment ?? was.comment);\n target.commentBefore = joinComments(target.commentBefore ?? was.commentBefore);\n return created;\n}\n\n/** Comment texts joined as lines, or undefined when there are none. */\nfunction joinComments(...parts: Array<string | null | undefined>): string | undefined {\n const lines = parts.filter(present);\n return lines.length > 0 ? lines.join('\\n') : undefined;\n}\n\n/** Make `map` hold `data`: changed keys updated in place, new keys appended in\n * `data`'s order. Keys `data` leaves out stay, unless `prune` is set. */\nexport function applyMapData(doc: Document, map: YAMLMap, data: Record<string, unknown>, opts: ApplyOptions = {}): void {\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) {continue;}\n const pair = findPair(map, key);\n if (pair) {\n pair.value = applyValue(doc, pair.value, value, opts);\n } else {\n map.items.push(doc.createPair(key, value));\n }\n }\n if (!opts.prune) {return;}\n map.items = map.items.filter(p => {\n const key = keyText(p);\n return key === undefined || data[key] !== undefined;\n });\n}\n\n/**\n * Merge `data` into `map`, whose parsed value (the file as it was read) is\n * `before`, writing only the paths where `data` differs from `before`:\n * - a key whose value in `data` equals its value in `before` is not touched\n * — its node stays exactly as written, so an alias (`summary: *g`), a\n * merge key or a comment on it survives even when `data` spells out the\n * value the alias read as (a stale copy never replaces a live `*alias`);\n * - a changed mapping is merged key by key the same way;\n * - any other changed value is set with {@link applyValue};\n * - an alias (`stack: *base`) is never replaced or expanded, at any depth:\n * it stays as written, and a change `data` makes under it is not written\n * ({@link keptAliases} lists those paths);\n * - keys `data` leaves out (or sets `undefined`) stay; new keys are appended.\n * This is how writeFaf applies full .faf data to an existing file.\n */\nexport function mergeData(doc: Document, map: YAMLMap, before: unknown, data: Record<string, unknown>): void {\n const was: Record<string, unknown> = isMapping(before) ? before : {};\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) {continue;}\n const pair = findPair(map, key);\n if (!pair) {\n map.items.push(doc.createPair(key, value));\n } else if (Object.prototype.hasOwnProperty.call(was, key) && sameJs(was[key], value)) {\n continue; // unchanged: the node stays as written\n } else if (isMapping(value) && isMapping(was[key]) && isMap(pair.value)) {\n mergeData(doc, pair.value, was[key], value);\n } else {\n pair.value = applyValue(doc, pair.value, value, { keepAliases: true });\n }\n }\n}\n\n/** An alias faf left as written: where it is (`stack`, `key_files.2`) and\n * what it says (`*base`). With `kind: 'anchor'` the path holds an anchor an\n * alias reads (`alias` then says `&name`): `faf auto` would have filled it,\n * which would change every alias that reads it, so it is left as written. */\nexport interface KeptAlias {\n path: string;\n alias: string;\n kind?: 'alias' | 'anchor';\n}\n\n/** Every alias in a mapping or list, with its path — not looking through aliases. */\nfunction aliasesIn(node: unknown, path: readonly (string | number)[], out: Array<{ path: (string | number)[]; node: Alias }>): void {\n if (isAlias(node)) {\n out.push({ path: [...path], node });\n } else if (isMap(node)) {\n for (const pair of node.items) {\n const key = keyText(pair);\n if (key !== undefined) {aliasesIn(pair.value, [...path, key], out);}\n }\n } else if (isSeq(node)) {\n node.items.forEach((item, i) => aliasesIn(item, [...path, i], out));\n }\n}\n\n/** The plain value at `path` of parsed data, or undefined. */\nfunction jsAt(data: unknown, path: readonly (string | number)[]): unknown {\n let cur = data;\n for (const step of path) {\n if (Array.isArray(cur) && typeof step === 'number') {\n cur = cur[step];\n } else if (isMapping(cur) && typeof step === 'string') {\n cur = cur[step];\n } else {\n return undefined;\n }\n }\n return cur;\n}\n\n/** The aliases in `doc` where `data` changed the value the file held\n * (`before`) and the alias does not read as the new value — a change under\n * an alias that faf did not write, because it never replaces or expands an\n * alias. A value `data` only repeats (a stale copy of what the alias read\n * as) is not a change. */\nexport function keptAliases(doc: Document, data: unknown, before: unknown): KeptAlias[] {\n const found: Array<{ path: (string | number)[]; node: Alias }> = [];\n aliasesIn(doc.contents, [], found);\n return found\n .filter(({ path, node }) => {\n const want = jsAt(data, path);\n return want !== undefined && !sameJs(jsAt(before, path), want) && !sameJs(node.toJS(doc), want);\n })\n .map(({ path, node }) => ({ path: path.join('.'), alias: `*${node.source}` }));\n}\n\n/** The node at `path` of a Document, and a way to put another node in its\n * place — or null when nothing is there. A list item is put back only over a\n * node the change made (one with no place in the file); an item of the file\n * that moved there is left. */\nfunction slotAt(doc: Document, path: readonly (string | number)[]): { node: unknown; put: (n: Node) => boolean } | null {\n let parent: unknown = doc.contents;\n for (let i = 0; i < path.length - 1 && parent !== undefined; i++) {parent = childAt(parent, path[i]);}\n const step = path[path.length - 1];\n if (isMap(parent) && typeof step === 'string') {\n const pair = findPair(parent, step);\n return pair ? { node: pair.value, put: n => ((pair.value = n), true) } : null;\n }\n if (isSeq(parent) && typeof step === 'number' && step < parent.items.length) {\n const seq = parent;\n const node = seq.items[step];\n return { node, put: n => (rangeOf(node) === undefined ? ((seq.items[step] = n), true) : false) };\n }\n return null;\n}\n\n/** The value a mapping holds under `step`, or a list's item `step`. */\nfunction childAt(node: unknown, step: string | number): unknown {\n if (isMap(node) && typeof step === 'string') {return findPair(node, step)?.value;}\n if (isSeq(node) && typeof step === 'number') {return node.items[step];}\n return undefined;\n}\n\n/**\n * Put back every alias of `before` that `after` (the same Document, changed)\n * holds something else in place of: faf never replaces an alias, so that\n * path keeps the file's `*name` and its change is not written. A key the\n * change removed stays removed. Returns the aliases put back.\n */\nexport function restoreAliases(before: Document, after: Document): KeptAlias[] {\n const found: Array<{ path: (string | number)[]; node: Alias }> = [];\n aliasesIn(before.contents, [], found);\n const kept: KeptAlias[] = [];\n for (const { path, node } of found) {\n const slot = slotAt(after, path);\n if (!slot || (isAlias(slot.node) && slot.node.source === node.source)) {continue;}\n if (!slot.put(node.clone() as Alias)) {continue;}\n kept.push({ path: path.join('.'), alias: `*${node.source}` });\n }\n return kept;\n}\n\n/** Every node with an anchor in `names`, with its path — not looking through aliases. */\nfunction anchoredIn(node: unknown, path: readonly (string | number)[], names: ReadonlySet<string>, out: Array<{ path: (string | number)[]; node: Node }>): void {\n if (!isNode(node) || isAlias(node)) {return;}\n const anchor = (node as Trivia).anchor;\n if (anchor && names.has(anchor)) {out.push({ path: [...path], node });}\n if (isMap(node)) {\n for (const pair of node.items) {\n const key = keyText(pair);\n if (key !== undefined) {anchoredIn(pair.value, [...path, key], names, out);}\n }\n } else if (isSeq(node)) {\n node.items.forEach((item, i) => anchoredIn(item, [...path, i], names, out));\n }\n}\n\n/**\n * Put back every node of `before` that carries an anchor an alias reads\n * (`frontend: &x None` while `ui_library: *x`) and that `after` (the same\n * Document, changed) holds something else in place of: a fill there would\n * change the value of every alias that reads it, so faf leaves the node as\n * written and its change is not written. Returns those paths (`kind:\n * 'anchor'`, `alias` saying `&name`).\n */\nexport function restoreAnchors(before: Document, after: Document): KeptAlias[] {\n const aliases: Array<{ path: (string | number)[]; node: Alias }> = [];\n aliasesIn(before.contents, [], aliases);\n const names = new Set(aliases.map(a => a.node.source));\n if (names.size === 0) {return [];}\n const found: Array<{ path: (string | number)[]; node: Node }> = [];\n anchoredIn(before.contents, [], names, found);\n const kept: KeptAlias[] = [];\n for (const { path, node } of found) {\n const slot = slotAt(after, path);\n if (!slot) {continue;}\n const anchor = (node as Trivia).anchor as string;\n const same = isNode(slot.node) && (slot.node as Trivia).anchor === anchor && sameJs(node.toJS(before), (slot.node as Node).toJS(after));\n if (same || !slot.put(node.clone() as Node)) {continue;}\n kept.push({ path: path.join('.'), alias: `&${anchor}`, kind: 'anchor' });\n }\n return kept;\n}\n\n/** Index pairs [i, j] of a longest common subsequence of `a` and `b`. */\nfunction commonItems(a: readonly unknown[], b: readonly unknown[]): Array<[number, number]> {\n const n = a.length;\n const m = b.length;\n const len: number[][] = Array.from({ length: n + 1 }, () => new Array<number>(m + 1).fill(0));\n for (let i = n - 1; i >= 0; i--) {\n for (let j = m - 1; j >= 0; j--) {\n len[i][j] = sameJs(a[i], b[j]) ? len[i + 1][j + 1] + 1 : Math.max(len[i + 1][j], len[i][j + 1]);\n }\n }\n const pairs: Array<[number, number]> = [];\n for (let i = 0, j = 0; i < n && j < m;) {\n if (sameJs(a[i], b[j])) {\n pairs.push([i, j]);\n i++;\n j++;\n } else if (len[i + 1][j] >= len[i][j + 1]) {\n i++;\n } else {\n j++;\n }\n }\n return pairs;\n}\n\n/** Make `seq` hold `data`. Items that are still there are kept as they are\n * (so removing or adding one item touches only that item); between them,\n * items are changed in place, then removed or added. */\nfunction applySeqData(doc: Document, seq: YAMLSeq, data: unknown[], opts: ApplyOptions): void {\n const old = seq.items;\n const oldJs = old.map(item => nodeJs(doc, item));\n const items: unknown[] = [];\n let i = 0;\n let j = 0;\n for (const [mi, mj] of [...commonItems(oldJs, data), [old.length, data.length] as [number, number]]) {\n for (; i < mi && j < mj; i++, j++) {items.push(applyValue(doc, old[i], data[j], opts));}\n for (; j < mj; j++) {items.push(doc.createNode(data[j]));}\n if (mi < old.length) {items.push(old[mi]);}\n i = mi + 1;\n j = mj + 1;\n }\n seq.items = items;\n}\n\n/**\n * Apply the change from `before` to `after` to `node`, touching nothing the\n * change does not name: for mappings, only keys added, removed or changed\n * between the two are written — a key in the file that neither side mentions\n * stays as it is. Returns the node to store.\n */\nexport function applyChange(doc: Document, node: unknown, before: unknown, after: unknown): unknown {\n if (sameJs(before, after)) {return node;}\n if (!isMapping(before) || !isMapping(after) || !isMap(node)) {return applyValue(doc, node, after);}\n const gone = new Set(Object.keys(before).filter(key => !(key in after) || after[key] === undefined));\n node.items = node.items.filter(p => {\n const key = keyText(p);\n return key === undefined || !gone.has(key);\n });\n for (const [key, value] of Object.entries(after)) {\n if (value === undefined) {continue;}\n const pair = findPair(node, key);\n if (!pair) {\n node.items.push(doc.createPair(key, value));\n } else if (!sameJs(before[key], value)) {\n pair.value = applyChange(doc, pair.value, before[key], value);\n }\n }\n return node;\n}\n\n/** The mapping at `path` (created when absent or empty). Throws when something\n * else is there — faf never replaces a scalar or a list to make room. */\nexport function mapAt(doc: Document, path: readonly string[], name: string): YAMLMap {\n let cur: unknown = doc.contents;\n if (cur === null || cur === undefined) {\n doc.contents = new YAMLMap();\n cur = doc.contents;\n }\n if (!isMap(cur)) {throw new Error(`${name}: the document is not a mapping — faf left it unchanged.`);}\n let map: YAMLMap = cur;\n for (const key of path) {\n const pair = findPair(map, key);\n if (pair && isMap(pair.value)) {\n map = pair.value;\n continue;\n }\n if (pair && !isEmptyValue(pair.value)) {throw new Error(`${name}: ${key} is not a mapping — faf left it unchanged.`);}\n const created = new YAMLMap();\n if (pair) {pair.value = filling(pair.value, created);} else {map.items.push(doc.createPair(key, created));}\n map = created;\n }\n return map;\n}\n\n/**\n * Apply the change `before` → `after` at `path` (see {@link applyChange}).\n * The parent mapping is created when absent; `after === undefined` removes the\n * key. Nothing is touched when the two are equal.\n */\nexport function changeAt(doc: Document, path: readonly string[], before: unknown, after: unknown, name: string): void {\n if (sameJs(before, after)) {return;}\n const parent = mapAt(doc, path.slice(0, -1), name);\n const key = path[path.length - 1];\n const pair = findPair(parent, key);\n if (after === undefined) {\n parent.items = parent.items.filter(p => p !== pair);\n } else if (!pair) {\n parent.items.push(doc.createPair(key, after));\n } else {\n pair.value = applyChange(doc, pair.value, before, after);\n }\n}\n\n/** The list at `path`, created (as an empty list) when absent or empty.\n * Throws when something else is there. */\nexport function seqAt(doc: Document, path: readonly string[], name: string): YAMLSeq {\n const parent = mapAt(doc, path.slice(0, -1), name);\n const key = path[path.length - 1];\n const pair = findPair(parent, key);\n if (pair && isSeq(pair.value)) {return pair.value;}\n if (pair && !isEmptyValue(pair.value)) {throw new Error(`${name}: ${path.join('.')} is not a list — faf left it unchanged.`);}\n const seq = new YAMLSeq();\n if (pair) {pair.value = filling(pair.value, seq);} else {parent.items.push(doc.createPair(key, seq));}\n return seq;\n}\n\n/** `created` taking the place of an empty value (`facts: # note`) that entries\n * are about to fill: the empty value's comment becomes a comment line above\n * those entries, so it is not lost. */\nfunction filling<T extends YAMLMap | YAMLSeq>(empty: unknown, created: T): T {\n if (!isScalar(empty)) {return created;}\n const lines = [empty.commentBefore, empty.comment].filter(present);\n if (lines.length > 0) {created.commentBefore = lines.join('\\n');}\n return created;\n}\n\n/** `key:` with nothing after it (or `~` / `null`). */\nfunction isEmptyValue(value: unknown): boolean {\n if (value === null || value === undefined) {return true;}\n return isScalar(value) && (value.value === null || value.value === undefined);\n}\n\n",
88
88
  "/**\n * Where .faf data came from: the file readFaf read it from (its real path) and\n * the text it read. writeFaf checks a write of that data against it — when the\n * file changed on disk after the read, the write is refused instead of being\n * made over the newer edit. Kept apart from interop/faf.ts so the pure parts\n * of detection (updateExistingFaf) can carry it without importing a module\n * that runs git.\n */\n\n/** The file a data object was read from, and the text read. */\nexport interface FafSource {\n real: string;\n text: string;\n}\n\nconst sources = new WeakMap<object, FafSource>();\n\n/** The source recorded for `data`, if any. */\nexport function fafSourceOf(data: unknown): FafSource | undefined {\n return typeof data === 'object' && data !== null ? sources.get(data) : undefined;\n}\n\n/** Record that `data` holds what `source.text` (read from `source.real`) says. */\nexport function setFafSource(data: object, source: FafSource): void {\n sources.set(data, source);\n}\n\n/** Let `to` — data made from `from` (a copy with empty slots filled, say) —\n * carry the file `from` was read from. Returns `to`. */\nexport function carryFafSource<T extends object>(from: unknown, to: T): T {\n const source = fafSourceOf(from);\n if (source) {sources.set(to, source);}\n return to;\n}\n\nconst fills = new WeakSet<object>();\n\n/** Mark `data` as a fill of the file it was read from — what `faf auto`\n * (updateExistingFaf) makes: detected values in the file's empty slots.\n * writeFaf leaves a node with an anchor that an alias reads as written in\n * such data, since filling it would change every alias. Returns `data`. */\nexport function markAsFill<T extends object>(data: T): T {\n fills.add(data);\n return data;\n}\n\n/** True when `data` was marked with {@link markAsFill}. */\nexport function isFill(data: unknown): boolean {\n return typeof data === 'object' && data !== null && fills.has(data);\n}\n",
@@ -93,8 +93,8 @@
93
93
  "/**\n * Text-preserving JSON edits: change the value of a key, or add a key that is\n * missing, and keep every other byte of the file — key order, spacing, a\n * 20-digit integer, an array written on one line. faf uses it for the one\n * JSON file it shares with its owner, a registry `server.json`, where faf owns\n * only the identity keys (`faf server-card`, `faf cards --target registry`).\n *\n * A patch is a plain object. For each key: a plain-object value is a folder to\n * go into (the file's value must be an object too); any other value replaces\n * the value's text when it differs, or is added when the key is missing.\n * Nothing is ever deleted, and `undefined` is skipped. When the file cannot be\n * edited that way — not valid JSON, not an object, a key it repeats on the way,\n * a value faf would have to replace to go into it, or an object or array in the\n * file where faf sets a plain value — a JsonEditError says why in one line and\n * nothing is changed.\n *\n * Two more edits keep the same promise: {@link upsertJsonRows} updates or\n * appends faf's own rows in an array (the `faf cards` catalog), and\n * {@link removeJsonKey} takes out one key faf added (its render hash).\n */\n\n/** Why a JSON text cannot be edited in place (one line). */\nexport class JsonEditError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'JsonEditError';\n }\n}\n\ninterface JMember {\n key: string;\n keyStart: number;\n keyEnd: number;\n value: JNode;\n}\n\ninterface JNode {\n kind: 'object' | 'array' | 'string' | 'number' | 'literal';\n start: number;\n end: number;\n members: JMember[];\n /** The elements of an array, in order (empty for anything else). */\n items: JNode[];\n}\n\nconst WS = new Set([' ', '\\t', '\\n', '\\r']);\n\n/** A strict JSON parser (RFC 8259) that keeps where every key and value sits. */\nclass Parser {\n private i = 0;\n\n constructor(private readonly s: string) {}\n\n parse(): JNode {\n if (this.s.startsWith('\\uFEFF')) {this.i = 1;}\n const node = this.value();\n this.ws();\n if (this.i !== this.s.length) {this.fail('text after the end of the JSON value');}\n return node;\n }\n\n private fail(why: string): never {\n throw new JsonEditError(`not valid JSON (${why} at offset ${this.i})`);\n }\n\n private ws(): void {\n while (this.i < this.s.length && WS.has(this.s[this.i])) {this.i++;}\n }\n\n private value(): JNode {\n this.ws();\n const c = this.s[this.i];\n if (c === '{') {return this.object();}\n if (c === '[') {return this.array();}\n if (c === '\"') {\n const start = this.i;\n this.string();\n return { kind: 'string', start, end: this.i, members: [], items: [] };\n }\n if (c === '-' || (c >= '0' && c <= '9')) {return this.number();}\n for (const lit of ['true', 'false', 'null']) {\n if (this.s.startsWith(lit, this.i)) {\n const start = this.i;\n this.i += lit.length;\n return { kind: 'literal', start, end: this.i, members: [], items: [] };\n }\n }\n return this.fail(c === undefined ? 'unexpected end' : `unexpected ${JSON.stringify(c)}`);\n }\n\n private object(): JNode {\n const start = this.i++;\n const members: JMember[] = [];\n this.ws();\n if (this.s[this.i] === '}') {\n this.i++;\n return { kind: 'object', start, end: this.i, members, items: [] };\n }\n for (;;) {\n this.ws();\n if (this.s[this.i] !== '\"') {this.fail('expected a key');}\n const keyStart = this.i;\n const key = this.string();\n const keyEnd = this.i;\n this.ws();\n if (this.s[this.i] !== ':') {this.fail('expected \":\"');}\n this.i++;\n members.push({ key, keyStart, keyEnd, value: this.value() });\n this.ws();\n if (this.s[this.i] === ',') {\n this.i++;\n continue;\n }\n if (this.s[this.i] === '}') {\n this.i++;\n return { kind: 'object', start, end: this.i, members, items: [] };\n }\n this.fail('expected \",\" or \"}\"');\n }\n }\n\n private array(): JNode {\n const start = this.i++;\n const items: JNode[] = [];\n this.ws();\n if (this.s[this.i] === ']') {\n this.i++;\n return { kind: 'array', start, end: this.i, members: [], items };\n }\n for (;;) {\n items.push(this.value());\n this.ws();\n if (this.s[this.i] === ',') {\n this.i++;\n continue;\n }\n if (this.s[this.i] === ']') {\n this.i++;\n return { kind: 'array', start, end: this.i, members: [], items };\n }\n this.fail('expected \",\" or \"]\"');\n }\n }\n\n /** A string token; returns its value. */\n private string(): string {\n const start = this.i++;\n for (;;) {\n const c = this.s[this.i];\n if (c === undefined) {this.fail('unterminated string');}\n if (c === '\"') {break;}\n if (c < ' ') {this.fail('control character in a string');}\n if (c === '\\\\') {\n const e = this.s[this.i + 1];\n if (e === 'u') {\n if (!/^[0-9a-fA-F]{4}$/.test(this.s.slice(this.i + 2, this.i + 6))) {this.fail('bad \\\\u escape');}\n this.i += 6;\n continue;\n }\n if (!'\"\\\\/bfnrt'.includes(e ?? 'x')) {this.fail('bad escape');}\n this.i += 2;\n continue;\n }\n this.i++;\n }\n this.i++;\n return JSON.parse(this.s.slice(start, this.i)) as string;\n }\n\n private number(): JNode {\n const m = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/.exec(this.s.slice(this.i));\n if (!m) {this.fail('bad number');}\n const start = this.i;\n this.i += m[0].length;\n return { kind: 'number', start, end: this.i, members: [], items: [] };\n }\n}\n\nconst isPlainObject = (v: unknown): v is Record<string, unknown> =>\n typeof v === 'object' && v !== null && !Array.isArray(v);\n\n/** Deep equality of parsed JSON values. */\nfunction sameJson(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) {return true;}\n if (Array.isArray(a) && Array.isArray(b)) {return a.length === b.length && a.every((x, i) => sameJson(x, b[i]));}\n if (isPlainObject(a) && isPlainObject(b)) {\n const ka = Object.keys(a);\n return ka.length === Object.keys(b).length && ka.every(k => k in b && sameJson(a[k], b[k]));\n }\n return false;\n}\n\ninterface Edit {\n start: number;\n end: number;\n text: string;\n}\n\n/** Layout facts of the file, so added text looks like the text around it. */\ninterface Style {\n eol: string;\n unit: string;\n}\n\n/** Where to add a missing key: after the first of these keys the object has\n * (else after its last key). Keyed by the dotted path of the object ('' is the root). */\nexport type InsertAfter = Record<string, Record<string, readonly string[]>>;\n\nclass Editor {\n readonly edits: Edit[] = [];\n\n constructor(\n private readonly s: string,\n private readonly style: Style,\n private readonly after: InsertAfter,\n ) {}\n\n /** True when only blanks sit between the start of its line and `pos` (and\n * there is a line before: a key that starts a line of its own). */\n private startsLine(pos: number): boolean {\n const nl = this.s.lastIndexOf('\\n', pos - 1);\n return nl >= 0 && /^[ \\t]*$/.test(this.s.slice(nl + 1, pos));\n }\n\n /** The blanks before `pos` on its line, when `pos` starts the line; else ''. */\n private indentOf(pos: number): string {\n return this.startsLine(pos) ? this.s.slice(this.s.lastIndexOf('\\n', pos - 1) + 1, pos) : '';\n }\n\n /** `v` as JSON text for a value whose key line is indented `indent`: laid\n * out over lines like the file around it when `multi`, else on one line. */\n private render(v: unknown, indent: string, multi: boolean): string {\n if (!multi) {return JSON.stringify(v);}\n return JSON.stringify(v, null, this.style.unit).split('\\n').join(this.style.eol + indent);\n }\n\n /** Apply `patch` to the object `obj` (at dotted `path`; `multi` when the\n * object is laid out over lines). */\n apply(obj: JNode, patch: Record<string, unknown>, path: string, multi: boolean): void {\n const fill: Record<string, unknown> = {}; // keys for an empty object, written as one\n for (const [key, value] of Object.entries(patch)) {\n if (value === undefined) {continue;}\n const at = path ? `${path}.${key}` : key;\n const found = obj.members.filter(m => m.key === key);\n if (found.length > 1) {throw new JsonEditError(`the key \"${at}\" is there more than once`);}\n const member = found[0];\n if (!member) {\n if (obj.members.length === 0) {fill[key] = value;}\n else {this.insert(obj, key, value, path);}\n continue;\n }\n const lined = this.startsLine(member.keyStart);\n if (isPlainObject(value)) {\n if (member.value.kind !== 'object') {throw new JsonEditError(`\"${at}\" is not an object, so faf cannot add its keys to it`);}\n this.apply(member.value, value, at, lined || this.s.slice(member.value.start, member.value.end).includes('\\n'));\n continue;\n }\n const now: unknown = JSON.parse(this.s.slice(member.value.start, member.value.end));\n if (sameJson(now, value)) {continue;}\n if (member.value.kind === 'object' || member.value.kind === 'array') {\n // The reverse of the case above: faf would replace the whole object or\n // array (every key or item in it) with its plain value.\n throw new JsonEditError(`\"${at}\" is ${member.value.kind === 'object' ? 'an object' : 'an array'}, so faf will not replace it with a value`);\n }\n this.edits.push({ start: member.value.start, end: member.value.end, text: this.render(value, this.indentOf(member.keyStart), lined) });\n }\n if (Object.keys(fill).length > 0) {this.fillEmpty(obj, fill, multi);}\n }\n\n /** Write the keys of an empty object (`{}`) in one go, laid out like the file. */\n private fillEmpty(obj: JNode, keys: Record<string, unknown>, multi: boolean): void {\n const outer = this.indentOf(this.lineLead(obj.start));\n const text = multi\n ? this.render(keys, outer, true)\n : JSON.stringify(keys);\n this.edits.push({ start: obj.start, end: obj.end, text });\n }\n\n /** Add `key: value` to `obj`, in the layout the object already has. In an\n * object laid out over lines the new key gets a line of its own and no\n * existing line changes: it goes after the hinted key, or — when that is\n * the last key, or there is no hint — just before the last key (after it\n * would need a comma on the last key's line). On one line it goes after\n * the hinted key, else at the end. */\n private insert(obj: JNode, key: string, value: unknown, path: string): void {\n const members = obj.members;\n const last = members[members.length - 1];\n const hints = this.after[path]?.[key] ?? [];\n const hinted = hints.map(h => members.find(m => m.key === h)).find(m => m !== undefined);\n if (this.startsLine(members[0].keyStart)) {\n // Before `next` (a key that starts its own line), as a whole line.\n const next = hinted && hinted !== last ? members[members.indexOf(hinted) + 1] : last;\n const indent = this.indentOf(next.keyStart);\n const sep = this.s.slice(next.keyEnd, next.value.start); // ': ' as the file writes it\n const lineAt = this.s.lastIndexOf('\\n', next.keyStart - 1);\n const at = lineAt > 0 && this.s[lineAt - 1] === '\\r' ? lineAt - 1 : lineAt;\n const text = `${this.style.eol}${indent}${JSON.stringify(key)}${sep}${this.render(value, indent, true)},`;\n this.edits.push({ start: at, end: at, text });\n return;\n }\n const anchor = hinted ?? last;\n const sep = this.s.slice(anchor.keyEnd, anchor.value.start);\n const between = members.length > 1 ? this.s.slice(members[0].value.end, members[1].keyStart) : ', ';\n this.edits.push({ start: anchor.value.end, end: anchor.value.end, text: `${between}${JSON.stringify(key)}${sep}${this.render(value, '', false)}` });\n }\n\n /** Append `items` to the array `arr`, laid out like it: each on a line of\n * its own after the last item when the items sit on lines of their own,\n * else on the same line after the last item. An empty array is written\n * whole, over lines when `multi` (its key starts the line at `keyStart`). */\n append(arr: JNode, items: readonly unknown[], keyStart: number, multi: boolean): void {\n if (items.length === 0) {return;}\n if (arr.items.length === 0) {\n this.edits.push({ start: arr.start, end: arr.end, text: this.render(items, this.indentOf(keyStart), multi) });\n return;\n }\n const last = arr.items[arr.items.length - 1];\n if (this.startsLine(arr.items[0].start)) {\n const indent = this.indentOf(arr.items[0].start);\n const text = items.map(v => `,${this.style.eol}${indent}${this.render(v, indent, true)}`).join('');\n this.edits.push({ start: last.end, end: last.end, text });\n return;\n }\n const between = arr.items.length > 1 ? this.s.slice(arr.items[0].end, arr.items[1].start) : ', ';\n this.edits.push({ start: last.end, end: last.end, text: items.map(v => `${between}${this.render(v, '', false)}`).join('') });\n }\n\n /** The first non-blank position of the line `pos` is on. */\n private lineLead(pos: number): number {\n let at = this.s.lastIndexOf('\\n', pos - 1) + 1;\n while (at < pos && (this.s[at] === ' ' || this.s[at] === '\\t')) {at++;}\n return at;\n }\n}\n\n/** The file's line ending, and its indent unit (the root's first key\n * indent), else two spaces. */\nfunction styleOf(s: string, root: JNode): Style {\n const eol = s.includes('\\r\\n') ? '\\r\\n' : '\\n';\n const first = root.members[0];\n const nl = first ? s.lastIndexOf('\\n', first.keyStart - 1) : -1;\n const lead = first && nl >= 0 ? s.slice(nl + 1, first.keyStart) : '';\n return { eol, unit: /^[ \\t]+$/.test(lead) ? lead : ' ' };\n}\n\n/**\n * Apply `patch` to the JSON `text`, changing only the value text of the keys\n * it names and adding the keys it has that the text lacks (see the file\n * header). Returns the new text and whether it changed. Throws a\n * JsonEditError, having changed nothing, when the text cannot be edited that\n * way. `after` says where a missing key goes (default: after the object's last key).\n */\nexport function editJsonText(\n text: string,\n patch: Record<string, unknown>,\n after: InsertAfter = {},\n): { text: string; changed: boolean } {\n const root = new Parser(text).parse();\n if (root.kind !== 'object') {throw new JsonEditError('the JSON is not an object');}\n const editor = new Editor(text, styleOf(text, root), after);\n editor.apply(root, patch, '', text.slice(root.start, root.end).includes('\\n'));\n return applyEdits(text, editor.edits);\n}\n\n/** `text` with `edits` made. Last edit first, so earlier offsets stay true;\n * two additions at one spot keep the order they were made in. */\nfunction applyEdits(text: string, edits: readonly Edit[]): { text: string; changed: boolean } {\n if (edits.length === 0) {return { text, changed: false };}\n const order = edits.map((e, i) => ({ e, i })).sort((a, b) => b.e.start - a.e.start || b.i - a.i);\n let out = text;\n for (const { e } of order) {\n out = out.slice(0, e.start) + e.text + out.slice(e.end);\n }\n return { text: out, changed: out !== text };\n}\n\n/** Parse `text` as a JSON object (JsonEditError otherwise). */\nfunction parseObject(text: string): JNode {\n const root = new Parser(text).parse();\n if (root.kind !== 'object') {throw new JsonEditError('the JSON is not an object');}\n return root;\n}\n\n/** The string value of `obj`'s key `key` (undefined when it has none, or the\n * value is not a string); JsonEditError when the key is there more than once. */\nfunction stringKey(text: string, obj: JNode, key: string, at: string): string | undefined {\n const found = obj.members.filter(m => m.key === key);\n if (found.length > 1) {throw new JsonEditError(`the key \"${at}.${key}\" is there more than once`);}\n const v = found[0]?.value;\n return v?.kind === 'string' ? (JSON.parse(text.slice(v.start, v.end)) as string) : undefined;\n}\n\n/**\n * Update or add rows in the array at the root key `key`, changing nothing\n * else: a row whose `id` value is exactly a row's in the file is updated in\n * place — only the values of its `update` keys change (or are added) — and any\n * other row is appended after the file's last item, laid out like the items\n * around it (the array, or the key, is added when missing). Every item faf\n * does not update stays byte for byte. Never matched by anything but `id`.\n * Throws a JsonEditError, having changed nothing, when the text cannot be\n * edited that way: not a JSON object, `key` not an array or there more than\n * once, a row's id there more than once, or a value faf sets that is an object\n * or array in the file.\n */\nexport function upsertJsonRows(\n text: string,\n key: string,\n rows: readonly Record<string, unknown>[],\n opts: { id: string; update: readonly string[] },\n): { text: string; changed: boolean } {\n const root = parseObject(text);\n const editor = new Editor(text, styleOf(text, root), {});\n const multiRoot = text.slice(root.start, root.end).includes('\\n');\n const found = root.members.filter(m => m.key === key);\n if (found.length > 1) {throw new JsonEditError(`the key \"${key}\" is there more than once`);}\n if (found.length === 0) {\n editor.apply(root, { [key]: rows }, '', multiRoot);\n return applyEdits(text, editor.edits);\n }\n const member = found[0];\n const arr = member.value;\n if (arr.kind !== 'array') {throw new JsonEditError(`\"${key}\" is not an array, so faf cannot add its rows to it`);}\n const append: Record<string, unknown>[] = [];\n for (const row of rows) {\n const want = row[opts.id];\n const hits = arr.items.filter((item, i) => item.kind === 'object' && stringKey(text, item, opts.id, `${key}[${i}]`) === want);\n if (hits.length > 1) {throw new JsonEditError(`the ${key} row ${JSON.stringify(want)} is there more than once`);}\n if (hits.length === 0) {\n append.push(row);\n continue;\n }\n const item = hits[0];\n const patch = Object.fromEntries(opts.update.map(k => [k, row[k]]));\n editor.apply(item, patch, `${key}[${arr.items.indexOf(item)}]`, text.slice(item.start, item.end).includes('\\n'));\n }\n editor.append(arr, append, member.keyStart, multiRoot);\n return applyEdits(text, editor.edits);\n}\n\n/** True when only blanks sit between the start of its line and `pos` (and\n * there is a line before it). */\nfunction startsLine(s: string, pos: number): boolean {\n const nl = s.lastIndexOf('\\n', pos - 1);\n return nl >= 0 && /^[ \\t]*$/.test(s.slice(nl + 1, pos));\n}\n\n/** The text to take out to remove `m` from `obj`, as the reverse of how\n * {@link editJsonText} adds a key: a key on a line of its own with a comma\n * after it goes with its line; a key after another goes with the separator\n * before it; the first key on the object's own line goes with the separator\n * after it; an only key leaves `{}`. */\nfunction removal(s: string, obj: JNode, m: JMember): Edit {\n if (obj.members.length === 1) {return { start: obj.start, end: obj.end, text: '{}' };}\n const i = obj.members.indexOf(m);\n if (startsLine(s, m.keyStart) && s[m.value.end] === ',') {\n const nl = s.lastIndexOf('\\n', m.keyStart - 1);\n return { start: nl > 0 && s[nl - 1] === '\\r' ? nl - 1 : nl, end: m.value.end + 1, text: '' };\n }\n if (i > 0) {return { start: obj.members[i - 1].value.end, end: m.value.end, text: '' };}\n return { start: m.keyStart, end: obj.members[1].keyStart, text: '' };\n}\n\n/** Walk `path` (each step a key of an object) from the root of `text`.\n * `count` is how many times the last key is there (0 when a step is missing\n * or not an object; more than 1 when the last key — or a key on the way — is\n * repeated). `chain` holds the object and member of every step when found. */\nfunction walk(text: string, path: readonly string[]): { count: number; chain: { obj: JNode; member: JMember }[] } {\n const chain: { obj: JNode; member: JMember }[] = [];\n let obj = parseObject(text);\n for (const key of path) {\n if (obj.kind !== 'object') {return { count: 0, chain };}\n const found = obj.members.filter(m => m.key === key);\n if (found.length !== 1) {return { count: found.length, chain };}\n chain.push({ obj, member: found[0] });\n obj = found[0].value;\n }\n return { count: 1, chain };\n}\n\n/**\n * The value at `path` in the JSON object `text` (each step a key of an\n * object): `count` 1 with its parsed `value`, 0 when a step is missing or not\n * an object, more than 1 when a key on the way is repeated. Throws a\n * JsonEditError when `text` is not a JSON object.\n */\nexport function locateJsonKey(text: string, path: readonly string[]): { count: number; value?: unknown } {\n const { count, chain } = walk(text, path);\n if (count !== 1) {return { count };}\n const v = chain[chain.length - 1].member.value;\n return { count, value: JSON.parse(text.slice(v.start, v.end)) as unknown };\n}\n\n/**\n * `text` with the key at `path` taken out — the reverse of {@link editJsonText}\n * adding it (see {@link removal}); every other byte stays. With\n * `dropEmptyParent`, when that key is its object's only key, the object's own\n * key is taken out instead. Returns null when the key is not there exactly\n * once; throws a JsonEditError when `text` is not a JSON object.\n */\nexport function removeJsonKey(text: string, path: readonly string[], opts: { dropEmptyParent?: boolean } = {}): string | null {\n const { count, chain } = walk(text, path);\n if (count !== 1 || chain.length === 0) {return null;}\n let step = chain[chain.length - 1];\n if (opts.dropEmptyParent && chain.length > 1 && step.obj.members.length === 1) {step = chain[chain.length - 2];}\n return applyEdits(text, [removal(text, step.obj, step.member)]).text;\n}\n",
94
94
  "import { join } from 'path';\nimport { deprecate } from 'node:util';\nimport type { FafData } from '../core/types.js';\nimport { writeRendered } from '../core/render-hash.js';\nimport { editJsonText } from '../core/json-edit.js';\nimport { SERVER_CARD_SCHEMA } from './pack.js';\nimport { REGISTRY_PUBLISHER_KEY, fafContextBlock } from './context-block.js';\n// The context block lives in context-block.ts (pure, shared with the pack projector).\nexport { REGISTRY_PUBLISHER_KEY, fafContextBlock, registryMeta } from './context-block.js';\n\n/**\n * Build an MCP Server Card (SEP-2127) from a .faf.\n *\n * The card is a published discovery manifest. By design it carries the FAF\n * context-block in `_meta[\"one.faf/context\"]` — so every Server Card produced\n * through FAF ships FAF context by default. This emitter is the SINGLE SOURCE of\n * the block — faf-server-card-ref and `.fafa` provenance compose it (never\n * hand-roll), so every surface is byte-identical by construction: one context,\n * one source, every door.\n *\n * Honest-first: no score is baked (it would go stale on disk); the block points\n * to the .faf and asserts the score is deterministic. The card omits `remotes`\n * unless a deployment URL is supplied — it must not claim an endpoint it lacks.\n */\n\nexport interface ServerCardOptions {\n /** Pointer to the .faf context (default: ./project.faf). Pass an absolute URL\n * for a remote/served card (e.g. faf-server-card-ref at context.faf.one). */\n fafPointer?: string;\n /** Optional live endpoint; adds a streamable-http remote when set. */\n remoteUrl?: string;\n /** Optional \"verify the score here\" URL — makes verify-don't-trust actionable\n * (faf-server-card-ref uses https://faf.one). Omitted from the block if unset. */\n scoreEndpoint?: string;\n /** Override timestamp (tests); otherwise .faf `generated`, else now. */\n now?: string;\n}\n\nconst SCHEMA = SERVER_CARD_SCHEMA;\nconst NAME_RE = /^[a-zA-Z0-9.-]+\\/[a-zA-Z0-9._-]+$/;\n\n/** Derive a reverse-DNS `namespace/name` for the card. */\nfunction serverName(data: FafData): string {\n const raw = String(data.project?.name ?? 'project').trim();\n if (raw.includes('/') && NAME_RE.test(raw)) {return raw;} // already namespaced\n\n const homepage = (data.project?.homepage ??\n data.project?.website ??\n data.project?.url) as string | undefined;\n let ns = 'local';\n if (homepage) {\n try {\n const host = new URL(homepage).hostname.replace(/^www\\./, '');\n ns = host.split('.').reverse().join('.'); // faf.one -> one.faf\n } catch {\n /* keep 'local' */\n }\n }\n const name = raw.replace(/[^a-zA-Z0-9._-]/g, '-').replace(/^-+|-+$/g, '') || 'project';\n return `${ns}/${name}`;\n}\n\n/** Server Card `description` is capped at 100 chars; never empty. */\nfunction clampDescription(data: FafData): string {\n const src = String(\n data.project?.goal ?? data.context ?? data.project?.name ?? 'MCP server',\n )\n .replace(/\\s+/g, ' ')\n .trim();\n if (!src) {return 'MCP server';}\n return src.length <= 100 ? src : `${src.slice(0, 97).trimEnd() }...`;\n}\n\n/** Build the Server Card object from .faf data. */\nexport function buildServerCard(\n data: FafData,\n opts: ServerCardOptions = {},\n): Record<string, unknown> {\n const card: Record<string, unknown> = {\n $schema: SCHEMA,\n name: serverName(data),\n version: String(data.project?.version ?? '0.1.0'),\n description: clampDescription(data),\n };\n\n const title = registryTitle(data) ?? (data.project?.name as string | undefined);\n if (title && title.length <= 100) {card.title = title;}\n\n const homepage = (data.project?.homepage ??\n data.project?.website ??\n data.project?.url) as string | undefined;\n if (homepage) {card.websiteUrl = homepage;}\n\n if (opts.remoteUrl) {\n card.remotes = [{ type: 'streamable-http', url: opts.remoteUrl }];\n }\n\n // The canonical FAF context-block — parity with faf-server-card-ref + .fafa.\n card._meta = { 'one.faf/context': fafContextBlock(data, opts) };\n\n return card;\n}\n\n/** The canonical reverse-DNS registry name, e.g. `one.faf/claude-faf-mcp`.\n *\n * HOMEPAGE REQUIRED: the namespace is derived from `project.homepage`'s host\n * (faf.one -> one.faf). With no homepage/website/url the namespace falls back\n * to `local/<name>`. This can't silently ship — the migration is guarded\n * (`rewrite-server-json.ts` refuses any name that isn't `one.faf/*`) — but set\n * `homepage: https://faf.one` in the .faf to get the correct `one.faf/<name>`. */\nexport function registryName(data: FafData): string {\n return serverName(data);\n}\n\n/** The display title for a registry `server.json` — the human-readable card name\n * (e.g. \"Claude FAF\"), sourced from `project.title` in the .faf. This is the\n * SINGLE SOURCE of the title across the fleet: JS emitters import it, and the\n * `faf server-card` CLI uses it so Python/Rust repos compose the identical\n * value (compose-not-fork). Distinct from `registryName` (the reverse-DNS id).\n * Returns undefined when unset or >100 chars (the registry cap) so the field is\n * omitted rather than shipped invalid — GitHub's registry then derives a name\n * from the namespace, so set `project.title` to control the display. */\nexport function registryTitle(data: FafData): string | undefined {\n const raw = (data.project as { title?: unknown } | undefined)?.title;\n if (typeof raw === 'string') {\n const t = raw.trim();\n if (t && t.length <= 100) {return t;}\n }\n return undefined;\n}\n\n/** The parsed JSON in `bytes`, or undefined when they are not JSON. */\nfunction jsonOf(bytes: Uint8Array): unknown {\n try {\n return JSON.parse(new TextDecoder().decode(bytes).replace(/^\\uFEFF/, ''));\n } catch {\n return undefined;\n }\n}\n\nconst isObj = (v: unknown): v is Record<string, unknown> => typeof v === 'object' && v !== null && !Array.isArray(v);\n\n/** True when `bytes` are a Server Card faf wrote: JSON carrying the FAF\n * context-block at `_meta[\"one.faf/context\"]`, as every card faf has\n * written does. */\nexport function hasServerCardMark(bytes: Uint8Array): boolean {\n const j = jsonOf(bytes);\n return isObj(j) && isObj(j._meta) && isObj(j._meta['one.faf/context']);\n}\n\n/** True when `bytes` are a registry `server.json` carrying faf's identity:\n * `_meta[REGISTRY_PUBLISHER_KEY][\"one.faf/context\"]`. */\nexport function hasRegistryMark(bytes: Uint8Array): boolean {\n const j = jsonOf(bytes);\n const provided = isObj(j) && isObj(j._meta) ? j._meta[REGISTRY_PUBLISHER_KEY] : undefined;\n return isObj(provided) && isObj(provided['one.faf/context']);\n}\n\n/** Options for the card writers ({@link writeServerCard}, `faf cards`). */\nexport interface CardWriteOptions {\n /** Replace a card faf cannot prove it wrote — no faf mark, edited since\n * faf wrote it, or from before 7.13 — the explicit overwrite (`--force`).\n * Default: such a file is refused and left as it is. */\n force?: boolean;\n}\n\n/** Write the Server Card to a `server-card` file. Returns the path.\n * Per experimental-ext-server-card#22 the reserved location is\n * `<streamable-http-url>/server-card` (no longer `.well-known`); serve the\n * emitted file there as `application/mcp-server-card+json`.\n *\n * The card carries faf's render hash at `_meta[\"one.faf/render\"]` (the hash\n * of the card without that key; the Server Card schema leaves `_meta` open\n * for namespaced keys). A `server-card` already there is replaced only when\n * it is byte for byte what faf last wrote (its hash still fits); a card edited\n * since, a hand-written card, or a card from before 7.13 that is not exactly\n * faf's render of `data` is refused (SafePathError `not-owned`) and left byte\n * for byte, unless `force`. The write is atomic and never goes through a link\n * that leaves `dir` or dangles. */\nexport function writeServerCard(\n dir: string,\n data: FafData,\n opts: ServerCardOptions = {},\n write: CardWriteOptions = {},\n): string {\n const card = buildServerCard(data, opts);\n const out = join(dir, 'server-card');\n writeRendered(out, `${JSON.stringify(card, null, 2) }\\n`, {\n root: dir,\n format: 'json',\n hasMark: hasServerCardMark,\n mark: 'FAF context-block (`_meta[\"one.faf/context\"]`)',\n force: write.force,\n });\n return out;\n}\n\n/** The identity faf owns in a registry `server.json`. */\nexport interface ServerJsonIdentity {\n /** The reverse-DNS registry name ({@link registryName}). */\n name: string;\n /** The display title ({@link registryTitle}); when undefined the file's own title is kept. */\n title?: string;\n /** A version to set (`--set-version`); when undefined the file's own is kept. */\n version?: string;\n /** The `_meta` faf writes ({@link registryMeta}); absent for a plain\n * registry identity from a .fafa (BETTER), which leaves `_meta` as it is. */\n meta?: Record<string, unknown>;\n}\n\n/**\n * Put faf's identity into the text of a registry `server.json`, changing\n * nothing else: the `name` value, the `title` (only when faf has one — the\n * file's own title is kept otherwise), a `version` asked for, and the keys of\n * faf's context-block under `_meta[REGISTRY_PUBLISHER_KEY][\"one.faf/context\"]`.\n * Each is a text edit of that one value, or the key added when missing; no\n * field is deleted, and every other byte — key order, a 20-digit number, an\n * array on one line, spacing, CRLF — stays as it was. Throws a JsonEditError,\n * changing nothing, when the text cannot be edited that way (not valid JSON,\n * not an object, a key repeated on the way, a `_meta` that is not an object).\n */\nexport function patchServerJson(text: string, identity: ServerJsonIdentity): { text: string; changed: boolean } {\n const patch: Record<string, unknown> = {\n name: identity.name,\n title: identity.title,\n version: identity.version,\n _meta: identity.meta,\n };\n return editJsonText(text, patch, {\n '': { name: ['$schema'], title: ['name'], version: ['description', 'title', 'name'] },\n });\n}\n\n/** @deprecated Use {@link buildServerCard}. Removed in the next major. */\nexport const generateServerCard = deprecate(\n buildServerCard,\n 'faf-cli: generateServerCard is deprecated, use buildServerCard',\n 'FAF0002',\n);\n",
95
95
  "/**\n * FAF's context block — what BEST adds to a card. Pure (no Node built-ins), so\n * `faf cards` and the browser-safe pack projector add the same block.\n *\n * The cards ladder: an agent.fafa gives the plain cards (BETTER); a project.faf,\n * resident and used, adds this block to each of them (BEST) — the A2A card's\n * context extension, the Server Card's `_meta[\"one.faf/context\"]`, the registry\n * `server.json`'s publisher-provided `_meta`.\n */\nimport type { FafData } from '../core/types.js';\n\n/** project.faf's IANA media type. */\nexport const FAF_MEDIA_TYPE = 'application/vnd.faf+yaml';\n\n/** A2A extension URI — dereference, not the MCP `_meta` key `one.faf/context`. */\nexport const A2A_CONTEXT_URI = 'https://faf.one/ext/context/v1';\n\nexport const REGISTRY_PUBLISHER_KEY = 'io.modelcontextprotocol.registry/publisher-provided';\nconst REGISTRY_META_CAP = 4096; // official registry cap on publisher-provided JSON (bytes)\n\nexport interface ContextBlockOptions {\n /** Pointer to the .faf context (default: ./project.faf). Pass an absolute URL\n * for a remote/served card (e.g. faf-server-card-ref at context.faf.one). */\n fafPointer?: string;\n /** Optional \"verify the score here\" URL — makes verify-don't-trust actionable\n * (faf-server-card-ref uses https://faf.one). Omitted from the block if unset. */\n scoreEndpoint?: string;\n /** Override timestamp (tests); otherwise .faf `generated`, else now. */\n now?: string;\n}\n\n/**\n * The canonical FAF context-block — the value of `_meta[\"one.faf/context\"]`,\n * identical across every surface (Server Card, registry `server.json`, `.fafa`):\n * one context, every door. Honest-first: no score baked (it would go stale on\n * disk); it points to the .faf and asserts the score is deterministic.\n */\nexport function fafContextBlock(\n data: FafData,\n opts: ContextBlockOptions = {},\n): Record<string, unknown> {\n return {\n faf: opts.fafPointer ?? './project.faf',\n mediaType: FAF_MEDIA_TYPE,\n iana: `https://www.iana.org/assignments/media-types/${FAF_MEDIA_TYPE}`,\n deterministic: true,\n ...(opts.scoreEndpoint ? { scoreEndpoint: opts.scoreEndpoint } : {}),\n generated:\n (data.generated as string | undefined) ?? opts.now ?? new Date().toISOString(),\n };\n}\n\n/**\n * Build the `_meta` for an MCP Registry `server.json`.\n *\n * The SAME canonical context-block as the Server Card, but nested under\n * `io.modelcontextprotocol.registry/publisher-provided` — the ONLY `_meta` key\n * the official registry preserves on publish. Top-level keys (the way the card\n * carries `one.faf/context`) are silently dropped by the registry. Throws if the\n * block exceeds the registry's 4KB cap. Merge the result into an existing\n * `server.json` `_meta`; don't regenerate the manifest (packages/mcpb are tuned).\n */\nexport function registryMeta(\n data: FafData,\n opts: ContextBlockOptions = {},\n): Record<string, unknown> {\n const provided = { 'one.faf/context': fafContextBlock(data, opts) };\n const bytes = new TextEncoder().encode(JSON.stringify(provided)).length;\n if (bytes > REGISTRY_META_CAP) {\n throw new Error(\n `publisher-provided _meta is ${bytes}B — exceeds the registry ${REGISTRY_META_CAP}B cap`,\n );\n }\n return { [REGISTRY_PUBLISHER_KEY]: provided };\n}\n",
96
- "/**\n * The card pack: a few answers in, a `.fafa` written from them, and every card\n * that `.fafa` can feed projected out: the A2A Agent Card, the MCP Server\n * Card, the MCP Registry `server.json`, an AI Catalog and an ARD manifest.\n *\n * Pure: no filesystem and no Node built-ins, so the same code runs in the CLI,\n * in a browser front door and in tests.\n *\n * The cards ladder, the same as `faf cards`: the `.fafa` is the source of every\n * card and gives the plain cards (BETTER); a project.faf, passed as `faf`, adds\n * FAF's context block to each of them (BEST). A card's identity always comes\n * from the `.fafa`, so moving up to BEST never rewrites it.\n */\nimport { stringify } from 'yaml';\nimport type { FafData } from '../core/types.js';\nimport {\n A2A_CONTEXT_URI,\n fafContextBlock,\n registryMeta,\n type ContextBlockOptions,\n} from './context-block.js';\n\nexport const A2A_PROTOCOL_BINDING = 'JSONRPC';\nexport const A2A_PROTOCOL_VERSION = '1.0';\n/** The three FAF-family media types, in family order. */\nexport const FAF_MEDIA_TYPES = [\n 'application/vnd.faf+yaml',\n 'application/vnd.fafm+yaml',\n 'application/vnd.fafa+yaml',\n] as const;\n/** The only `$schema` a Server Card may carry (modelcontextprotocol/ext-server-card). */\nexport const SERVER_CARD_SCHEMA = 'https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json';\n/** The dated registry schema a `server.json` declares (latest release 2025-12-11). */\nexport const SERVER_JSON_SCHEMA = 'https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json';\nexport const AI_CATALOG_SPEC_VERSION = '1.0';\nexport const FAFA_SPEC_VERSION = '1.0';\n/** Media types a catalog entry uses for each card it lists (AI Catalog's own list). */\nexport const CARD_MEDIA_TYPES = {\n a2a: 'application/a2a-agent-card+json',\n server_card: 'application/mcp-server-card+json',\n fafa: 'application/vnd.fafa+yaml',\n} as const;\n\nexport interface FafaAgent {\n name?: string;\n displayName?: string;\n id?: string;\n vendor?: string;\n version?: string;\n description?: string;\n homepage?: string;\n license?: string;\n}\n\nexport interface FafaCapability {\n name?: string;\n type?: string;\n description?: string;\n tags?: unknown;\n /** MIME type this capability reads, when it's one of the FAF family — drives the skill's `inputModes` and the card's `defaultInputModes`. */\n cites_spec?: string;\n}\n\nexport interface FafaEndpoint {\n protocol?: string;\n transport?: string;\n location?: string;\n version?: string;\n}\n\n/** Facts only some cards carry, kept in the `.fafa` under `metadata.cards` so the file stays the one source. */\nexport interface PackExtras {\n domain?: string;\n repository?: string;\n icon?: string;\n organizationUrl?: string;\n keywords?: string[];\n examples?: string[];\n packages?: PackPackage[];\n}\n\nexport interface PackPackage {\n registryType: string;\n identifier: string;\n version?: string;\n}\n\nexport interface FafaDoc {\n /** `.fafa` spec version this document is authored against, e.g. `\"1.0\"` — not `agent.version`. */\n version?: string;\n agent?: FafaAgent;\n capabilities?: FafaCapability[];\n endpoints?: FafaEndpoint[];\n provenance?: Record<string, unknown>;\n metadata?: { persona?: string; cards?: PackExtras; [key: string]: unknown };\n [key: string]: unknown;\n}\n\nexport interface A2AExtension {\n uri: string;\n description: string;\n required: boolean;\n params: Record<string, unknown>;\n}\n\nexport interface ProjectedA2A {\n name: string;\n description: string;\n supportedInterfaces: Array<{\n url: string;\n protocolBinding: string;\n protocolVersion: string;\n }>;\n /** Omitted entirely when `agent.vendor` or `agent.homepage` is absent — A2A optional, never a guessed org name. */\n provider?: { organization: string; url: string };\n version: string;\n capabilities: {\n streaming: boolean;\n pushNotifications: boolean;\n extendedAgentCard: boolean;\n extensions: A2AExtension[];\n };\n defaultInputModes: string[];\n defaultOutputModes: string[];\n skills: Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n inputModes?: string[];\n }>;\n}\n\nexport function a2aEndpoints(fafa: FafaDoc): FafaEndpoint[] {\n return (fafa.endpoints ?? []).filter(\n (e) => String(e.protocol ?? '').toLowerCase() === 'a2a' && e.location,\n );\n}\n\n/** Authored A2A endpoints, else a single `doorUrl`. Never invents a door. */\nexport function a2aDoors(fafa: FafaDoc, opts: { doorUrl?: string } = {}): FafaEndpoint[] {\n const fromDoc = a2aEndpoints(fafa);\n if (fromDoc.length > 0) {return fromDoc;}\n const door = opts.doorUrl?.trim();\n if (door) {\n return [{ protocol: 'a2a', location: door, version: A2A_PROTOCOL_VERSION }];\n }\n return [];\n}\n\n/** Where the `.fafa` itself is served — the same door the catalog's `agent`\n * row points at, so a card and a catalog never disagree about it. Left off\n * the card, rather than guessed, when the `.fafa` names no domain. */\nfunction fafaPassportUrl(fafa: FafaDoc): string | undefined {\n try {\n return `https://${fafaDomain(fafa)}/.well-known/fafa`;\n } catch {\n return undefined;\n }\n}\n\n/**\n * FAF's context extension for the A2A card (BEST). Its `params` are a superset\n * of {@link fafContextBlock}, enriched with `.fafa`-specific identity that only\n * makes sense for an agent card (agentId, passport, the full FAF media-type\n * family). Nests the base block's `faf`/`mediaType` under `provenance` rather\n * than flattening them, per the extension's own shape (`§7` of the field\n * mapping). The Server Card and registry `_meta` stay on the plain\n * {@link fafContextBlock} shape.\n */\nexport function fafaContextExtension(fafa: FafaDoc, faf: FafData, opts: ContextBlockOptions = {}): A2AExtension {\n const block = fafContextBlock(faf, opts);\n const agent = fafa.agent ?? {};\n const params: Record<string, unknown> = {\n fafaSpecVersion: String(fafa.version ?? FAFA_SPEC_VERSION),\n mediaTypes: [...FAF_MEDIA_TYPES],\n provenance: { faf: block.faf, mediaType: block.mediaType },\n generated: block.generated,\n };\n if (agent.id) {params.agentId = agent.id;}\n const passport = fafaPassportUrl(fafa);\n if (passport) {params.passport = passport;}\n return {\n uri: A2A_CONTEXT_URI,\n description: 'FAF passport and project DNA as typed parts',\n required: false,\n params,\n };\n}\n\n/** `text/plain` plus any FAF media type a capability's `cites_spec` names. */\nfunction defaultA2AInputModes(fafa: FafaDoc): string[] {\n const cited = new Set<string>();\n for (const c of fafa.capabilities ?? []) {\n if (c.cites_spec && (FAF_MEDIA_TYPES as readonly string[]).includes(c.cites_spec)) {\n cited.add(c.cites_spec);\n }\n }\n return ['text/plain', ...cited];\n}\n\n/**\n * The A2A Agent Card from a `.fafa`: every field comes from the document, and\n * `capabilities.extensions` holds exactly the extensions passed (none by default).\n */\nexport function projectA2ACard(\n fafa: FafaDoc,\n opts: { doorUrl?: string; extensions?: A2AExtension[] } = {},\n): ProjectedA2A {\n const agent = fafa.agent ?? {};\n const doors = a2aDoors(fafa, opts);\n if (doors.length === 0) {\n throw new Error(\n \"No A2A endpoint in .fafa (need endpoints[].protocol: a2a + location). Will not invent a door.\",\n );\n }\n const name = String(agent.displayName ?? fafa.metadata?.persona ?? agent.name ?? '').trim();\n const description = String(agent.description ?? '').trim();\n const version = String(agent.version ?? '').trim();\n if (!name || !description || !version) {\n throw new Error('A2A card needs agent.displayName|name, description, version in .fafa');\n }\n // provider is A2A-optional: emit it only when both halves are real, never a guessed org name.\n const organization = String(agent.vendor ?? '').trim();\n const homepage = String(agent.homepage ?? '').trim();\n const provider = organization && homepage ? { organization, url: homepage } : undefined;\n\n const skills = (fafa.capabilities ?? []).map((c) => {\n const id = String(c.name ?? '').trim();\n if (!id) {throw new Error('A2A skill missing capabilities[].name');}\n const tags = Array.isArray(c.tags) ? c.tags.map(String) : [];\n const inputModes =\n c.cites_spec && (FAF_MEDIA_TYPES as readonly string[]).includes(c.cites_spec)\n ? [c.cites_spec, 'text/plain']\n : undefined;\n return {\n id,\n name: id,\n description: String(c.description ?? '').trim() || id,\n tags,\n ...(inputModes ? { inputModes } : {}),\n };\n });\n\n return {\n name,\n description,\n supportedInterfaces: doors.map((e) => ({\n url: String(e.location),\n protocolBinding: A2A_PROTOCOL_BINDING,\n protocolVersion: String(e.version ?? A2A_PROTOCOL_VERSION),\n })),\n ...(provider ? { provider } : {}),\n version,\n capabilities: {\n // Endpoint existence isn't streaming support: FAFA's A2A door explicitly\n // errors message/stream today (-32004). Advertising true would be a\n // claim the door can't back up. Flip this only once a real per-door\n // streaming signal exists in .fafa/project.faf to key off of.\n streaming: false,\n pushNotifications: false,\n extendedAgentCard: false,\n extensions: [...(opts.extensions ?? [])],\n },\n defaultInputModes: defaultA2AInputModes(fafa),\n defaultOutputModes: ['text/plain', 'application/json'],\n skills,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Answers → .fafa\n// ---------------------------------------------------------------------------\n\n/** What someone tells the front door. Keys match the crosswalk's slot ids. */\nexport interface PackAnswers {\n display_name: string;\n handle: string;\n domain: string;\n description: string;\n version: string;\n endpoints?: Array<{ protocol: string; url: string }>;\n skills?: Array<{ name: string; description?: string; type?: string }>;\n organization?: string;\n organization_url?: string;\n homepage?: string;\n icon?: string;\n repository?: string;\n license?: string;\n tags?: string[];\n example_requests?: string[];\n packages?: PackPackage[];\n}\n\nconst HANDLE_RE = /^[a-z0-9][a-z0-9._-]*$/;\n/** npm's own package-name rule: lowercase, URL-safe, optionally `@scope/`, and\n * never starting with `-`, `.` or `_` (a leading `-` would be read as an option). */\nconst NPM_NAME_RE = /^(@[a-z0-9~][a-z0-9-._~]*\\/)?[a-z0-9~][a-z0-9-._~]*$/;\n/** PyPI's project-name rule (PEP 508): letters, digits, `.`, `_`, `-`, starting and\n * ending with a letter or digit. */\nconst PYPI_NAME_RE = /^[A-Za-z0-9]([A-Za-z0-9._-]*[A-Za-z0-9])?$/;\n/** Any other registry's identifier (oci, nuget, ...): no whitespace, and it starts\n * with a letter or digit, so it is never read as an option. */\nconst PACKAGE_ID_RE = /^[A-Za-z0-9][^\\s]*$/;\nconst ENDPOINT_PROTOCOLS = ['a2a', 'mcp'];\nconst DOMAIN_RE = /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,}$/;\n\nfunction clean(s: unknown): string {\n return String(s ?? '').trim();\n}\n\nfunction list(xs: unknown): string[] {\n return Array.isArray(xs) ? xs.map(clean).filter(Boolean) : [];\n}\n\n/** A domain as typed (\"https://www.Example.com/about\") reduced to the name (\"example.com\"). */\nfunction normaliseDomain(raw: unknown): string {\n return clean(raw).toLowerCase().replace(/^https?:\\/\\//, '').replace(/\\/.*$/, '').replace(/^www\\./, '');\n}\n\nfunction checkIdentity(a: PackAnswers, handle: string, domain: string): void {\n const missing = (['display_name', 'description', 'version'] as const).filter((k) => !clean(a[k]));\n if (missing.length) {throw new Error(`Missing answer: ${missing.join(', ')}`);}\n if (!HANDLE_RE.test(handle)) {throw new Error('Short name: lowercase letters, digits, dots, hyphens or underscores.');}\n if (!DOMAIN_RE.test(domain)) {throw new Error(`Domain \"${a.domain}\" is not a domain name (e.g. example.com).`);}\n}\n\nfunction capabilitiesFrom(a: PackAnswers, keywords: string[]): FafaCapability[] {\n return (a.skills ?? [])\n .filter((s) => clean(s.name))\n .map((s) => ({\n name: clean(s.name),\n type: clean(s.type) || 'tool',\n description: clean(s.description) || clean(s.name),\n // A2A requires tags on every skill: the keywords, else the skill's own name.\n tags: keywords.length ? keywords : [clean(s.name).toLowerCase()],\n }));\n}\n\n/** A package people install: an npm one must carry npm's own name, a PyPI one\n * PyPI's, and any other an identifier that cannot be read as an option — the\n * `.fafa` names it as the MCP server's stdio command, so nothing else gets through. */\nfunction packagesFrom(a: PackAnswers): PackPackage[] {\n const packages = (a.packages ?? []).filter((p) => clean(p.registryType) && clean(p.identifier));\n for (const p of packages) {\n const type = clean(p.registryType);\n const id = clean(p.identifier);\n if (type === 'npm' && !NPM_NAME_RE.test(id)) {\n throw new Error(`Package \"${id}\" is not an npm package name (e.g. weather-mcp or @acme/weather).`);\n }\n if (type === 'pypi' && !PYPI_NAME_RE.test(id)) {\n throw new Error(`Package \"${id}\" is not a PyPI package name (e.g. weather-mcp or weather_mcp).`);\n }\n if (type !== 'npm' && type !== 'pypi' && !PACKAGE_ID_RE.test(id)) {\n throw new Error(`Package \"${id}\" is not a ${type} package identifier: it must start with a letter or digit and have no spaces.`);\n }\n }\n return packages\n .map((p) => ({\n registryType: clean(p.registryType),\n identifier: clean(p.identifier),\n ...(clean(p.version) ? { version: clean(p.version) } : {}),\n }));\n}\n\n/** A URL people call: http(s) only, speaking a2a or mcp. */\nfunction checkEndpoint(e: { protocol: string; url: string }): void {\n if (!/^https?:\\/\\/[^\\s/]+/i.test(clean(e.url))) {\n throw new Error(`Where it runs: \"${clean(e.url)}\" is not an http(s) URL (or give an npm package).`);\n }\n if (!ENDPOINT_PROTOCOLS.includes(clean(e.protocol).toLowerCase())) {\n throw new Error(`Protocol \"${clean(e.protocol)}\": a2a or mcp.`);\n }\n}\n\nfunction endpointsFrom(a: PackAnswers, packages: PackPackage[]): FafaEndpoint[] {\n const urls = (a.endpoints ?? []).filter((e) => clean(e.url));\n urls.forEach(checkEndpoint);\n const endpoints: FafaEndpoint[] = [\n ...urls.map((e) => ({ protocol: clean(e.protocol).toLowerCase(), transport: 'http', location: clean(e.url) })),\n ...packages.map((p) => ({ protocol: 'mcp', transport: 'stdio', location: p.identifier })),\n ];\n if (endpoints.length === 0) {throw new Error('Missing answer: endpoints (a URL, or a package people install)');}\n return endpoints;\n}\n\nfunction extrasFrom(a: PackAnswers, domain: string, keywords: string[], packages: PackPackage[]): PackExtras {\n const extras: PackExtras = { domain };\n const optional: Array<[keyof PackExtras, string]> = [\n ['repository', clean(a.repository)],\n ['icon', clean(a.icon)],\n ['organizationUrl', clean(a.organization_url)],\n ];\n for (const [key, value] of optional) {\n if (value) {(extras as Record<string, unknown>)[key] = value;}\n }\n if (keywords.length) {extras.keywords = keywords;}\n const examples = list(a.example_requests);\n if (examples.length) {extras.examples = examples;}\n if (packages.length) {extras.packages = packages;}\n return extras;\n}\n\n/** Write the `.fafa` a set of answers describes. Throws, naming the answer, when one is missing or malformed. */\nexport function answersToFafa(a: PackAnswers): FafaDoc {\n const handle = clean(a.handle).toLowerCase();\n const domain = normaliseDomain(a.domain);\n checkIdentity(a, handle, domain);\n const keywords = list(a.tags);\n const packages = packagesFrom(a);\n const agent: FafaAgent = {\n name: handle,\n displayName: clean(a.display_name),\n id: `urn:air:${domain}:agent:${handle}`,\n ...(clean(a.organization) ? { vendor: clean(a.organization) } : {}),\n version: clean(a.version),\n description: clean(a.description),\n homepage: clean(a.homepage) || `https://${domain}`,\n ...(clean(a.license) ? { license: clean(a.license) } : {}),\n };\n return {\n version: FAFA_SPEC_VERSION,\n agent,\n capabilities: capabilitiesFrom(a, keywords),\n endpoints: endpointsFrom(a, packages),\n metadata: { cards: extrasFrom(a, domain, keywords, packages) },\n };\n}\n\n/** The `.fafa` as the YAML document people keep. */\nexport function fafaYaml(fafa: FafaDoc): string {\n return stringify(fafa, { lineWidth: 0 });\n}\n\n// ---------------------------------------------------------------------------\n// .fafa → the other cards\n// ---------------------------------------------------------------------------\n\n/** Where the `.fafa` says it is published: `agent.id` (urn:air), else metadata, else the homepage host. */\nexport function fafaDomain(fafa: FafaDoc): string {\n const id = clean(fafa.agent?.id);\n const m = /^urn:air:([^:]+):/.exec(id);\n if (m) {return m[1];}\n const fromExtras = clean(fafa.metadata?.cards?.domain);\n if (fromExtras) {return fromExtras;}\n try {\n return new URL(clean(fafa.agent?.homepage)).hostname.replace(/^www\\./, '');\n } catch {\n throw new Error('The .fafa names no domain (agent.id urn:air, metadata.cards.domain or agent.homepage).');\n }\n}\n\n/** The stable short name a card is filed under: `agent.name`, lowercased and\n * reduced to the characters an identifier may carry. The `{name}` of\n * `urn:air:{publisher}:{namespace}:{name}` — never a display string. */\nexport function fafaHandle(fafa: FafaDoc): string {\n return handleOf(fafa);\n}\n\nfunction handleOf(fafa: FafaDoc): string {\n const h = clean(fafa.agent?.name).toLowerCase().replace(/[^a-z0-9._-]/g, '-').replace(/^-+|-+$/g, '');\n if (!h) {throw new Error('The .fafa needs agent.name (the short name).');}\n return h;\n}\n\n/** MCP names are reverse-DNS: example.com + weather → com.example/weather. */\nexport function mcpName(fafa: FafaDoc): string {\n return `${fafaDomain(fafa).split('.').reverse().join('.')}/${handleOf(fafa)}`;\n}\n\n/** Server Card and registry descriptions and titles cap at 100 characters. */\nfunction cap100(s: string): string {\n const t = s.replace(/\\s+/g, ' ').trim();\n return t.length <= 100 ? t : `${t.slice(0, 97).trimEnd()}...`;\n}\n\n/** The `.fafa`'s MCP endpoints at an http(s) URL — what a Server Card describes. */\nexport function mcpRemotes(fafa: FafaDoc): Array<{ type: string; url: string }> {\n return (fafa.endpoints ?? [])\n .filter((e) => clean(e.protocol).toLowerCase() === 'mcp' && /^https?:\\/\\//.test(clean(e.location)))\n .map((e) => ({ type: 'streamable-http', url: clean(e.location) }));\n}\n\nfunction repositoryOf(url: string): { url: string; source: string } | undefined {\n if (!url) {return undefined;}\n try {\n const host = new URL(url).hostname.replace(/^www\\./, '');\n return { url, source: host.split('.')[0] };\n } catch {\n return undefined;\n }\n}\n\n/** Identity shared by the Server Card and the registry entry. */\nfunction mcpIdentity(fafa: FafaDoc): Record<string, unknown> {\n const agent = fafa.agent ?? {};\n const extras = fafa.metadata?.cards ?? {};\n const description = clean(agent.description);\n const version = clean(agent.version);\n if (!description || !version) {throw new Error('An MCP card needs agent.description and agent.version in .fafa');}\n const out: Record<string, unknown> = {\n name: mcpName(fafa),\n version,\n description: cap100(description),\n };\n const title = clean(agent.displayName);\n if (title) {out.title = cap100(title);}\n const homepage = clean(agent.homepage);\n if (homepage) {out.websiteUrl = homepage;}\n const repo = repositoryOf(clean(extras.repository));\n if (repo) {out.repository = repo;}\n if (clean(extras.icon)) {out.icons = [{ src: clean(extras.icon) }];}\n return out;\n}\n\n/** The packages people install, from the `.fafa`, as a registry entry lists them. */\nfunction registryPackages(fafa: FafaDoc): Array<Record<string, unknown>> {\n return (fafa.metadata?.cards?.packages ?? []).map((p) => ({\n registryType: clean(p.registryType),\n identifier: clean(p.identifier),\n ...(clean(p.version) ? { version: clean(p.version) } : {}),\n transport: { type: 'stdio' },\n }));\n}\n\n/** True when the `.fafa` gives a registry entry: a package or a remote MCP URL. */\nexport function hasRegistryEntry(fafa: FafaDoc): boolean {\n return mcpRemotes(fafa).length > 0 || registryPackages(fafa).length > 0;\n}\n\n/** The registry identity from the `.fafa`: `name`, and `title` when it has one. */\nexport function registryIdentity(fafa: FafaDoc): { name: string; title?: string } {\n const title = clean(fafa.agent?.displayName);\n return { name: mcpName(fafa), ...(title ? { title: cap100(title) } : {}) };\n}\n\n/** The MCP Server Card for a remote MCP server. With a project.faf (`faf`,\n * BEST) it carries FAF's context block at `_meta[\"one.faf/context\"]`. */\nexport function projectServerCard(fafa: FafaDoc, faf?: FafData, opts: ContextBlockOptions = {}): Record<string, unknown> {\n const remotes = mcpRemotes(fafa);\n if (remotes.length === 0) {\n throw new Error('A Server Card describes a remote MCP server: the .fafa has no mcp endpoint at an http(s) URL.');\n }\n return {\n $schema: SERVER_CARD_SCHEMA,\n ...mcpIdentity(fafa),\n remotes,\n ...(faf ? { _meta: { 'one.faf/context': fafContextBlock(faf, opts) } } : {}),\n };\n}\n\n/** The MCP Registry `server.json` (publishing it stays the owner's step). With\n * a project.faf (`faf`, BEST) it carries FAF's context block in the registry's\n * publisher-provided `_meta`. */\nexport function projectServerJson(fafa: FafaDoc, faf?: FafData, opts: ContextBlockOptions = {}): Record<string, unknown> {\n const remotes = mcpRemotes(fafa);\n const packages = registryPackages(fafa);\n if (remotes.length === 0 && packages.length === 0) {\n throw new Error('A registry entry needs a package people install or a remote MCP URL.');\n }\n return {\n $schema: SERVER_JSON_SCHEMA,\n ...mcpIdentity(fafa),\n ...(packages.length ? { packages } : {}),\n ...(remotes.length ? { remotes } : {}),\n ...(faf ? { _meta: registryMeta(faf, opts) } : {}),\n };\n}\n\nexport type PackCard = 'a2a' | 'server_card' | 'server_json' | 'ai_catalog' | 'ard' | 'fafa';\n\nexport interface CatalogRow {\n identifier: string;\n displayName: string;\n type: string;\n description: string;\n url: string;\n version?: string;\n updatedAt: string;\n}\n\n/** Options for the catalog rows. */\nexport interface CatalogRowOptions {\n /** `updatedAt` for the rows; otherwise now. */\n now?: string;\n /** List the `.fafa` itself (served at /.well-known/fafa). Default true: it is\n * the source of the cards — what makes them BETTER. */\n listFafa?: boolean;\n /** Public URL of the A2A card; default the domain's /.well-known/agent-card.json. */\n a2aCardUrl?: string;\n /** An A2A door when the `.fafa` names none (as `faf cards --door-url`). */\n doorUrl?: string;\n}\n\n/** Where the A2A card is served — only when it is asked for and the `.fafa`\n * names an A2A door, so a catalog never lists a card nobody wrote. */\nfunction a2aCardUrlFor(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions): string | undefined {\n if (!cards.includes('a2a') || a2aDoors(fafa, opts).length === 0) {return undefined;}\n return opts.a2aCardUrl ?? `https://${fafaDomain(fafa)}/.well-known/agent-card.json`;\n}\n\n/** One row per card the domain serves: the A2A card (when the `.fafa` names an\n * A2A door), the Server Card (when it names a remote MCP URL), and the `.fafa`. */\nexport function catalogRows(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions = {}): CatalogRow[] {\n const domain = fafaDomain(fafa);\n const handle = handleOf(fafa);\n const agent = fafa.agent ?? {};\n const displayName = clean(agent.displayName) || clean(agent.name);\n const description = clean(agent.description);\n const version = clean(agent.version);\n const now = opts.now ?? new Date().toISOString();\n const row = (ns: string, type: string, url: string): CatalogRow => ({\n identifier: `urn:air:${domain}:${ns}:${handle}`,\n displayName,\n type,\n description,\n url,\n ...(version ? { version } : {}),\n updatedAt: now,\n });\n const rows: CatalogRow[] = [];\n const a2aUrl = a2aCardUrlFor(fafa, cards, opts);\n if (a2aUrl) {rows.push(row('a2a', CARD_MEDIA_TYPES.a2a, a2aUrl));}\n if (cards.includes('server_card')) {\n const remote = mcpRemotes(fafa)[0];\n if (remote) {rows.push(row('mcp', CARD_MEDIA_TYPES.server_card, `${remote.url.replace(/\\/+$/, '')}/server-card`));}\n }\n if (opts.listFafa !== false) {rows.push(row('agent', CARD_MEDIA_TYPES.fafa, `https://${domain}/.well-known/fafa`));}\n return rows;\n}\n\n/** Who publishes a catalog: AI Catalog's `host` object. */\nexport interface CatalogHost {\n displayName: string;\n identifier?: string;\n}\n\n/**\n * The catalog's `host` — who publishes these entries. Naming one is what\n * lifts a catalog from Level 1 \"minimal\" to Level 2 \"discoverable\", and\n * `displayName` is the field that does it: the validator takes an empty one\n * as *invalid*, not as minimal. So a `.fafa` that names nobody gets no host\n * at all — a minimal catalog that validates beats a discoverable one that\n * does not. `identifier` rides along whenever the `.fafa` says where it\n * lives, and is left off when it does not.\n */\nexport function catalogHost(fafa: FafaDoc): CatalogHost | undefined {\n const agent = fafa.agent ?? {};\n const displayName = clean(agent.vendor) || clean(agent.displayName) || clean(agent.name);\n if (!displayName) {return undefined;}\n let identifier: string | undefined;\n try {\n identifier = fafaDomain(fafa);\n } catch {\n identifier = undefined;\n }\n return { displayName, ...(identifier ? { identifier } : {}) };\n}\n\n/** The AI Catalog for the domain: every row above, with the host named. */\nexport function projectAiCatalog(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions = {}): Record<string, unknown> {\n const host = catalogHost(fafa);\n return {\n specVersion: AI_CATALOG_SPEC_VERSION,\n ...(host ? { host } : {}),\n entries: catalogRows(fafa, cards, opts),\n };\n}\n\n/**\n * The search hints ARD reads, from the `.fafa`: `metadata.cards.keywords` and\n * `metadata.cards.examples`. An entry with no `representativeQueries` is, in\n * the conformance CLI's own words, \"a valid catalog entry but not a\n * discoverable ARD entry\" — the semantic index is built from that term.\n */\nexport function ardHints(fafa: FafaDoc): { tags?: string[]; representativeQueries?: string[] } {\n const extras = fafa.metadata?.cards ?? {};\n const tags = list(extras.keywords);\n const queries = list(extras.examples);\n return {\n ...(tags.length ? { tags } : {}),\n ...(queries.length ? { representativeQueries: queries } : {}),\n };\n}\n\n/** The ARD manifest: the catalog, plus the search hints ARD reads. ARD builds\n * on ai-catalog (spec §4), so the document is the same shape — the entries\n * carry more. */\nexport function projectArd(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions = {}): Record<string, unknown> {\n const host = catalogHost(fafa);\n const hints = ardHints(fafa);\n return {\n specVersion: AI_CATALOG_SPEC_VERSION,\n ...(host ? { host } : {}),\n entries: catalogRows(fafa, cards, opts).map((r) => ({ ...r, ...hints })),\n };\n}\n\nexport interface PackOptions extends ContextBlockOptions {\n /** Which cards to build; the `.fafa` is always written. */\n cards: PackCard[];\n /** `updatedAt` for catalog rows (tests); otherwise now. */\n now?: string;\n /** List the `.fafa` itself in the catalog and ARD manifest (it is then served\n * at /.well-known/fafa). Default true; `false` leaves it out. */\n listFafa?: boolean;\n /** Extensions to put on the A2A card, besides FAF's own (added with `faf`). */\n a2aExtensions?: A2AExtension[];\n /** project.faf (BEST): adds FAF's context block to the A2A card, the Server\n * Card and server.json. Without it the cards are plain (BETTER). */\n faf?: FafData;\n}\n\nexport interface Pack {\n fafa: FafaDoc;\n fafaText: string;\n a2a?: ProjectedA2A;\n server_card?: Record<string, unknown>;\n server_json?: Record<string, unknown>;\n ai_catalog?: Record<string, unknown>;\n ard?: Record<string, unknown>;\n}\n\n/** Every card a `.fafa` can feed, for the cards asked. */\nexport function projectPack(fafa: FafaDoc, opts: PackOptions): Pack {\n const want = new Set(opts.cards);\n const pack: Pack = { fafa, fafaText: fafaYaml(fafa) };\n const { faf } = opts;\n if (want.has('a2a')) {\n const extensions = [...(opts.a2aExtensions ?? []), ...(faf ? [fafaContextExtension(fafa, faf, opts)] : [])];\n pack.a2a = projectA2ACard(fafa, { extensions });\n }\n if (want.has('server_card')) {pack.server_card = projectServerCard(fafa, faf, opts);}\n if (want.has('server_json')) {pack.server_json = projectServerJson(fafa, faf, opts);}\n const rowOpts = { now: opts.now, listFafa: opts.listFafa };\n if (want.has('ai_catalog')) {pack.ai_catalog = projectAiCatalog(fafa, opts.cards, rowOpts);}\n if (want.has('ard')) {pack.ard = projectArd(fafa, opts.cards, rowOpts);}\n return pack;\n}\n\n/** Answers in, the `.fafa` and every card asked for out. */\nexport function buildPack(answers: PackAnswers, opts: PackOptions): Pack {\n return projectPack(answersToFafa(answers), opts);\n}\n",
97
- "import { existsSync } from 'fs';\nimport { basename, dirname, join } from 'path';\nimport { deprecate } from 'node:util';\nimport { parse } from 'yaml';\nimport type { FafData } from '../core/types.js';\nimport { makeDirInside, readUtf8, resolveInside } from '../core/safe-write.js';\nimport { writeRendered, type RenderedResult } from '../core/render-hash.js';\nimport { editJsonText, upsertJsonRows } from '../core/json-edit.js';\nimport {\n a2aDoors,\n ardHints,\n catalogHost,\n catalogRows,\n fafaContextExtension,\n hasRegistryEntry,\n mcpRemotes,\n projectA2ACard,\n projectServerCard,\n registryIdentity,\n type CatalogHost,\n type FafaDoc,\n type ProjectedA2A,\n} from './pack.js';\nimport {\n fafContextBlock,\n buildServerCard,\n hasRegistryMark,\n hasServerCardMark,\n registryMeta,\n registryName,\n registryTitle,\n type ServerCardOptions,\n} from './servercard.js';\nimport { A2A_CONTEXT_URI } from './context-block.js';\n\nexport { A2A_CONTEXT_URI } from './context-block.js';\n// The .fafa types, the A2A card core and its helpers live in pack.ts (pure, no\n// Node built-ins) so the CLI and a browser front door share one projector.\nexport {\n A2A_PROTOCOL_BINDING,\n A2A_PROTOCOL_VERSION,\n FAF_MEDIA_TYPES,\n a2aEndpoints,\n a2aDoors,\n} from './pack.js';\nexport type { FafaAgent, FafaCapability, FafaEndpoint, FafaDoc, ProjectedA2A } from './pack.js';\n\nexport type CardTarget = 'a2a' | 'mcp' | 'registry' | 'catalog' | 'ard';\nexport const CARD_TARGETS: CardTarget[] = ['a2a', 'mcp', 'registry', 'catalog', 'ard'];\n\nexport interface ProjectCardsOptions extends ServerCardOptions {\n /** Public URL of the emitted A2A card (catalog row). */\n a2aCardUrl?: string;\n /** Caller-supplied A2A door when `.fafa` has no `endpoints[].protocol: a2a`. */\n doorUrl?: string;\n}\n\nexport interface CatalogEntry {\n identifier: string;\n displayName?: string;\n type: string;\n description?: string;\n url: string;\n updatedAt?: string;\n /** ARD's search hints — on the ARD manifest's rows only. */\n tags?: string[];\n representativeQueries?: string[];\n}\n\nexport interface AiCatalog {\n specVersion: string;\n host?: Record<string, unknown>;\n entries: CatalogEntry[];\n [key: string]: unknown;\n}\n\nexport interface ProjectedCards {\n /** faf's context block — only when a project.faf was given (BEST). */\n block?: Record<string, unknown>;\n a2a?: ProjectedA2A;\n mcp?: Record<string, unknown>;\n registry?: {\n name: string;\n title?: string;\n /** FAF's context block (BEST); absent from a plain registry identity (BETTER). */\n _meta?: Record<string, unknown>;\n };\n catalog?: CatalogEntry[];\n /** The same rows, carrying ARD's search hints — the ARD manifest. */\n ard?: CatalogEntry[];\n /** Who publishes the catalog — written only into a catalog that names\n * nobody yet. An existing `host` is the site's, and is never touched. */\n catalogHost?: CatalogHost;\n}\n\nexport function readFafa(path: string): FafaDoc {\n // A .fafa that links out of its folder is refused (SafePathError), never read:\n // a hostile repo's agent.fafa -> ~/.aws/credentials would otherwise be parsed\n // and quoted in an error. A link to a same-name file inside the folder is fine.\n return parse(readUtf8(resolveInside(dirname(path), basename(path)))) as FafaDoc;\n}\n\n/** Discover agent.fafa / .fafa (cwd, then one parent). */\nexport function findFafaFile(dir: string = process.cwd()): string | null {\n const candidates = ['agent.fafa', '.fafa'];\n for (const name of candidates) {\n const full = join(dir, name);\n if (existsSync(full)) {return full;}\n }\n const parent = dirname(dir);\n if (parent !== dir) {\n for (const name of candidates) {\n const full = join(parent, name);\n if (existsSync(full)) {return full;}\n }\n }\n return null;\n}\n\n/** Build the A2A Agent Card (JSON) from a .fafa: the core card\n * ({@link projectA2ACard}). With a project.faf (BEST) it carries FAF's\n * context extension; with none (BETTER) it is the plain A2A card — the\n * .fafa is its source, and nothing on it points at a project.faf. */\nexport function buildA2ACard(\n fafa: FafaDoc,\n faf?: FafData,\n opts: ProjectCardsOptions = {},\n): ProjectedA2A {\n // Checked before the extension is built, so a card with no door fails the\n // same way it always has, before anything reads the .faf.\n if (a2aDoors(fafa, opts).length === 0) {\n throw new Error(\n \"No A2A endpoint in .fafa (need endpoints[].protocol: a2a + location). Will not invent a door.\",\n );\n }\n return projectA2ACard(fafa, {\n doorUrl: opts.doorUrl,\n extensions: faf ? [fafaContextExtension(fafa, faf, opts)] : [],\n });\n}\n\n/** @deprecated Use {@link buildA2ACard}. Removed in the next major. */\nexport const generateA2ACard = deprecate(\n buildA2ACard,\n 'faf-cli: generateA2ACard is deprecated, use buildA2ACard',\n 'FAF0003',\n);\n\n/**\n * The catalog rows for this agent — the pack projector's own\n * ({@link catalogRows}), so `faf cards` and the pack list the same rows: the\n * A2A card (when the `.fafa` names an A2A door), the Server Card (when it names\n * a remote MCP URL) and the `.fafa` itself, keyed\n * `urn:air:{publisher}:{namespace}:{name}`, where the publisher is the domain\n * the `.fafa` *declares* (`agent.id`'s urn:air, `metadata.cards.domain`, else\n * the homepage host) and the name is the handle.\n *\n * Throws, rather than inventing either half, when the `.fafa` names no domain:\n * an identifier is a catalog's primary key, and `urn:air:local:…` published to\n * the world is worse than a refusal a line of YAML fixes.\n */\nexport function catalogEntriesFor(\n fafa: FafaDoc,\n faf: FafData = {},\n opts: ProjectCardsOptions = {},\n): CatalogEntry[] {\n return catalogRows(fafa, ['a2a', 'server_card'], {\n now: opts.now ?? (faf.generated as string | undefined) ?? new Date().toISOString(),\n a2aCardUrl: opts.a2aCardUrl,\n doorUrl: opts.doorUrl,\n });\n}\n\n/** The row in `entries` that is faf's own row `row`: the one whose\n * identifier is exactly faf's (`urn:air:<host>:a2a:<slug>` or\n * `urn:air:<host>:agent:<slug>`). Never matched by type or URL — a row of\n * yours for another agent, or another card of the same type, is not faf's. */\nfunction catalogMatchIndex(entries: CatalogEntry[], row: CatalogEntry): number {\n return entries.findIndex((e) => e.identifier === row.identifier);\n}\n\n/** Upsert projector entries into an existing catalog. Leaves every other row\n * alone: a row is faf's only when its identifier is exactly faf's (never by\n * type or URL). On match, only url / type / updatedAt move — host copy\n * (title, tags) stays; any other faf row is appended. `host` names the\n * publisher on a catalog that names none — an existing one is the site's own\n * and stays as it is. */\nexport function upsertCatalog(\n existing: AiCatalog | undefined,\n incoming: CatalogEntry[],\n host?: CatalogHost,\n): AiCatalog {\n const opened: AiCatalog = existing\n ? { ...existing, entries: [...(existing.entries ?? [])] }\n : { specVersion: '1.0', entries: [] };\n // A host the catalog already names is the site's own — never overwritten.\n // A missing one is added where the spec shows it: straight after specVersion.\n const base: AiCatalog =\n host && opened.host === undefined\n ? (({ specVersion, ...rest }) => ({ specVersion, host: { ...host }, ...rest }))(opened)\n : opened;\n for (const row of incoming) {\n const i = catalogMatchIndex(base.entries, row);\n if (i >= 0) {\n base.entries[i] = {\n ...base.entries[i],\n url: row.url,\n type: row.type,\n ...(row.updatedAt ? { updatedAt: row.updatedAt } : {}),\n };\n } else {\n base.entries.push(row);\n }\n }\n return base;\n}\n\n/** The keys of a catalog row faf updates in place (its own row only). */\nconst CATALOG_ROW_UPDATES = ['url', 'type', 'updatedAt'] as const;\n\n/**\n * {@link upsertCatalog} as a text edit of the catalog's JSON: faf's own rows\n * (identifier exactly faf's) get their url / type / updatedAt values changed\n * in place, faf's other rows are appended after the last entry, and every\n * other byte — your rows, their order and layout, other keys — stays. With no\n * text (no catalog yet) a new catalog is returned. `host` names the publisher\n * (AI Catalog Level 2 \"discoverable\") and is added, after `specVersion`, only\n * to a catalog that names none: a `host` already in the file is the site's own\n * and is left byte for byte. Throws a JsonEditError, changing nothing, when\n * the catalog cannot be edited that way (not a JSON object, `entries` not an\n * array, faf's row there twice, …).\n */\nexport function upsertCatalogText(\n text: string | null,\n incoming: CatalogEntry[],\n host?: CatalogHost,\n): { text: string; changed: boolean } {\n if (text === null) {\n const fresh = { specVersion: '1.0', ...(host ? { host } : {}), entries: incoming };\n return { text: `${JSON.stringify(fresh, null, 2)}\\n`, changed: true };\n }\n const rows = upsertJsonRows(text, 'entries', incoming as unknown as Record<string, unknown>[], {\n id: 'identifier',\n update: CATALOG_ROW_UPDATES,\n });\n if (!host || namesHost(rows.text)) {return rows;}\n const named = editJsonText(rows.text, { host }, { '': { host: ['specVersion'] } });\n return { text: named.text, changed: rows.changed || named.changed };\n}\n\n/** True when the catalog JSON already names a `host` — any value, including\n * null or one the spec would refuse. Whatever is there is the site's. */\nfunction namesHost(text: string): boolean {\n try {\n const doc = JSON.parse(text) as Record<string, unknown>;\n return Object.prototype.hasOwnProperty.call(doc, 'host');\n } catch {\n return true; // Unparseable: add nothing.\n }\n}\n\n/** The cards an agent.fafa gives with no project.faf (BETTER): the A2A card\n * (when it names an A2A door), the MCP Server Card (when it names a remote MCP\n * URL), the registry server.json (a remote or a package), the AI Catalog, ARD. */\nexport function betterTargets(fafa: FafaDoc, opts: ProjectCardsOptions = {}): CardTarget[] {\n return [\n ...(a2aDoors(fafa, opts).length > 0 ? ['a2a' as const] : []),\n ...(mcpRemotes(fafa).length > 0 ? ['mcp' as const] : []),\n ...(hasRegistryEntry(fafa) ? ['registry' as const] : []),\n 'catalog',\n 'ard',\n ];\n}\n\n/**\n * Project the cards. The ladder — BETTER is the .fafa, BEST is project.faf:\n * an agent.fafa alone gives the plain cards ({@link betterTargets}); a\n * project.faf, resident and used, adds FAF's context block to each (the A2A\n * card's extension, the Server Card's and server.json's `_meta`). A card's\n * identity comes from the .fafa at both rungs. With a project.faf and no MCP\n * endpoint in the .fafa (an MCP server's own repo), the Server Card and the\n * registry identity come from project.faf, as `faf server-card` writes them.\n */\nexport function projectCards(input: {\n /** project.faf — absent means BETTER. */\n faf?: FafData;\n fafa?: FafaDoc;\n targets?: CardTarget[];\n opts?: ProjectCardsOptions;\n}): ProjectedCards {\n const opts = input.opts ?? {};\n const faf = input.faf;\n const fafa = input.fafa;\n const all = faf ? CARD_TARGETS : fafa ? betterTargets(fafa, opts) : [];\n const wanted = new Set(input.targets?.length ? input.targets : all);\n const out: ProjectedCards = {};\n if (faf) {out.block = fafContextBlock(faf, opts);}\n\n if (wanted.has('mcp')) {\n if (fafa && mcpRemotes(fafa).length > 0) {\n out.mcp = projectServerCard(fafa, faf, opts);\n } else if (faf) {\n out.mcp = buildServerCard(faf, opts);\n } else {\n throw new Error('A Server Card needs an MCP endpoint at an http(s) URL in the .fafa, or a project.faf.');\n }\n }\n if (wanted.has('registry')) {\n if (fafa && hasRegistryEntry(fafa)) {\n out.registry = { ...registryIdentity(fafa), ...(faf ? { _meta: registryMeta(faf, opts) } : {}) };\n } else if (faf) {\n const title = registryTitle(faf);\n out.registry = {\n name: registryName(faf),\n ...(title ? { title } : {}),\n _meta: registryMeta(faf, opts),\n };\n } else {\n throw new Error('A registry entry needs a package or a remote MCP URL in the .fafa, or a project.faf.');\n }\n }\n\n if (wanted.has('a2a') || wanted.has('catalog') || wanted.has('ard')) {\n if (!input.fafa) {\n if (input.targets?.some((t) => t === 'a2a' || t === 'catalog' || t === 'ard')) {\n throw new Error('A2A/catalog/ARD require a .fafa (agent.fafa). Will not invent an agent.');\n }\n }\n }\n\n if (wanted.has('a2a') && input.fafa) {\n if (a2aDoors(input.fafa, opts).length === 0) {\n if (input.targets?.includes('a2a')) {\n throw new Error(\n \"No A2A endpoint in .fafa (need endpoints[].protocol: a2a + location). Will not invent a door.\",\n );\n }\n } else {\n out.a2a = buildA2ACard(input.fafa, faf, opts);\n }\n }\n\n if ((wanted.has('catalog') || wanted.has('ard')) && input.fafa) {\n const rows = catalogEntriesFor(input.fafa, faf, opts);\n if (wanted.has('catalog')) {out.catalog = rows;}\n if (wanted.has('ard')) {\n // ARD builds on ai-catalog: the same rows, carrying the hints its\n // semantic index is built from.\n const hints = ardHints(input.fafa);\n out.ard = rows.map((r) => ({ ...r, ...hints }));\n }\n const host = catalogHost(input.fafa);\n if (host) {out.catalogHost = host;}\n }\n\n assertSameBlock(out);\n return out;\n}\n\n/**\n * Same underlying context on every emitted door. MCP and registry carry\n * {@link fafContextBlock} byte-identically. A2A's extension params are a\n * deliberate, richer superset (agentId, passport, mediaTypes — see\n * {@link fafaExtensionParams}), so the check there is narrower: its nested\n * `provenance.faf` / `provenance.mediaType` must match the same block's\n * `faf` / `mediaType` — the same pointer, not a byte-identical payload.\n */\nexport function assertSameBlock(cards: ProjectedCards): void {\n // BETTER: no project.faf, so no block on any card.\n if (!cards.block) {return;}\n const want = JSON.stringify(cards.block);\n const got: string[] = [];\n if (cards.mcp) {\n const meta = cards.mcp._meta as { 'one.faf/context': unknown };\n got.push(JSON.stringify(meta['one.faf/context']));\n }\n if (cards.registry?._meta) {\n const pp = cards.registry._meta['io.modelcontextprotocol.registry/publisher-provided'] as {\n 'one.faf/context': unknown;\n };\n got.push(JSON.stringify(pp['one.faf/context']));\n }\n for (const g of got) {\n if (g !== want) {\n throw new Error('context block drifted across card targets — one projector, one block');\n }\n }\n if (cards.a2a) {\n const ext = cards.a2a.capabilities.extensions?.find((e) => e.uri === A2A_CONTEXT_URI);\n if (!ext) {throw new Error('A2A card has no FAF context extension, but a project.faf was given');}\n const params = ext.params as {\n provenance?: { faf?: unknown; mediaType?: unknown };\n };\n const block = cards.block as { faf?: unknown; mediaType?: unknown };\n if (\n params.provenance?.faf !== block.faf ||\n params.provenance?.mediaType !== block.mediaType\n ) {\n throw new Error('A2A extension provenance drifted from the context block — one context, every door');\n }\n }\n}\n\n/** True when `bytes` are an A2A Agent Card faf wrote: JSON whose\n * `capabilities.extensions` carry the FAF context extension\n * ({@link A2A_CONTEXT_URI}), as every card faf has written does. */\nexport function hasA2ACardMark(bytes: Uint8Array): boolean {\n let j: unknown;\n try {\n j = JSON.parse(new TextDecoder().decode(bytes).replace(/^\\uFEFF/, ''));\n } catch {\n return false;\n }\n const caps = typeof j === 'object' && j !== null ? (j as { capabilities?: { extensions?: unknown } }).capabilities : undefined;\n const exts = caps?.extensions;\n return Array.isArray(exts) && exts.some(e => typeof e === 'object' && e !== null && (e as { uri?: unknown }).uri === A2A_CONTEXT_URI);\n}\n\n/** True when `bytes` carry any of faf's card marks: the MCP Server Card's\n * `_meta[\"one.faf/context\"]`, a registry server.json's publisher-provided\n * `one.faf/context`, or the A2A card's FAF context extension. */\nexport function hasFafCardMark(bytes: Uint8Array): boolean {\n return hasServerCardMark(bytes) || hasRegistryMark(bytes) || hasA2ACardMark(bytes);\n}\n\n/** Options for {@link writeJson}. */\nexport interface WriteJsonOptions {\n /** True when the bytes already at the path carry faf's older mark (a file\n * faf wrote before render hashes). Default: one of faf's card marks\n * ({@link hasFafCardMark}). */\n owns?: (existing: Buffer) => boolean;\n /** faf's mark in words, for the refusal. */\n mark?: string;\n /** Replace a file faf cannot prove it wrote anyway — the explicit overwrite (`--force`). */\n force?: boolean;\n}\n\n/** Write `value` as JSON (2-space, final newline) with faf's render hash at\n * `_meta[\"one.faf/render\"]` — atomically, and never through a link that\n * leaves `root` (default: the file's own folder) or dangles. The folder is\n * created when missing, never through a link that leaves `root`. A file\n * already there is replaced only when it is byte for byte what faf last wrote\n * (its render hash still fits); a file edited since, one without faf's mark,\n * or one from before 7.13 that is not exactly this JSON is refused\n * (SafePathError `not-owned`) and left byte for byte, unless `force`.\n * Returns what it did: `created`, `updated`, or `unchanged` (the file\n * already held exactly these bytes, and nothing was written). */\nexport function writeJson(path: string, value: unknown, root?: string, write: WriteJsonOptions = {}): RenderedResult {\n makeDirInside(root ?? dirname(path), dirname(path));\n return writeRendered(path, `${JSON.stringify(value, null, 2)}\\n`, {\n root: root ?? dirname(path),\n format: 'json',\n hasMark: write.owns ?? hasFafCardMark,\n mark: write.mark ?? 'FAF context-block (a faf card mark)',\n force: write.force,\n }).result;\n}\n\n/** True when `bytes` are JSON laid out exactly as faf writes it (2-space\n * JSON and a final newline), so re-writing it loses nothing: no hand\n * formatting, no repeated key, no number JSON cannot hold exactly. */\nexport function isFafJsonLayout(bytes: Uint8Array): boolean {\n const text = new TextDecoder().decode(bytes);\n try {\n return `${JSON.stringify(JSON.parse(text), null, 2)}\\n` === text;\n } catch {\n return false;\n }\n}\n\nexport function parseTargets(raw?: string): CardTarget[] | undefined {\n if (!raw) {return undefined;}\n const parts = raw.split(',').map((s) => s.trim().toLowerCase()).filter(Boolean);\n const bad = parts.filter((p) => !CARD_TARGETS.includes(p as CardTarget));\n if (bad.length) {\n throw new Error(`unknown card target: ${bad.join(', ')} (use ${CARD_TARGETS.join(',')})`);\n }\n return parts as CardTarget[];\n}\n",
96
+ "/**\n * The card pack: a few answers in, a `.fafa` written from them, and every card\n * that `.fafa` can feed projected out: the A2A Agent Card, the MCP Server\n * Card, the MCP Registry `server.json`, an AI Catalog and an ARD manifest.\n *\n * Pure: no filesystem and no Node built-ins, so the same code runs in the CLI,\n * in a browser front door and in tests.\n *\n * The cards ladder, the same as `faf cards`: the `.fafa` is the source of every\n * card and gives the plain cards (BETTER); a project.faf, passed as `faf`, adds\n * FAF's context block to each of them (BEST). A card's identity always comes\n * from the `.fafa`, so moving up to BEST never rewrites it.\n */\nimport { stringify } from 'yaml';\nimport type { FafData } from '../core/types.js';\nimport {\n A2A_CONTEXT_URI,\n fafContextBlock,\n registryMeta,\n type ContextBlockOptions,\n} from './context-block.js';\n\nexport const A2A_PROTOCOL_BINDING = 'JSONRPC';\nexport const A2A_PROTOCOL_VERSION = '1.0';\n/** The three FAF-family media types, in family order. */\nexport const FAF_MEDIA_TYPES = [\n 'application/vnd.faf+yaml',\n 'application/vnd.fafm+yaml',\n 'application/vnd.fafa+yaml',\n] as const;\n/** The only `$schema` a Server Card may carry (modelcontextprotocol/ext-server-card). */\nexport const SERVER_CARD_SCHEMA = 'https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json';\n/** The dated registry schema a `server.json` declares (latest release 2025-12-11). */\nexport const SERVER_JSON_SCHEMA = 'https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json';\nexport const AI_CATALOG_SPEC_VERSION = '1.0';\nexport const FAFA_SPEC_VERSION = '1.0';\n/** Media types a catalog entry uses for each card it lists (AI Catalog's own list). */\nexport const CARD_MEDIA_TYPES = {\n a2a: 'application/a2a-agent-card+json',\n server_card: 'application/mcp-server-card+json',\n fafa: 'application/vnd.fafa+yaml',\n} as const;\n\nexport interface FafaAgent {\n name?: string;\n displayName?: string;\n id?: string;\n vendor?: string;\n version?: string;\n description?: string;\n homepage?: string;\n license?: string;\n}\n\nexport interface FafaCapability {\n name?: string;\n type?: string;\n description?: string;\n tags?: unknown;\n /** MIME type this capability reads, when it's one of the FAF family — drives the skill's `inputModes` and the card's `defaultInputModes`. */\n cites_spec?: string;\n}\n\nexport interface FafaEndpoint {\n protocol?: string;\n transport?: string;\n location?: string;\n version?: string;\n}\n\n/** Facts only some cards carry, kept in the `.fafa` under `metadata.cards` so the file stays the one source. */\nexport interface PackExtras {\n domain?: string;\n repository?: string;\n icon?: string;\n organizationUrl?: string;\n keywords?: string[];\n examples?: string[];\n packages?: PackPackage[];\n}\n\nexport interface PackPackage {\n registryType: string;\n identifier: string;\n version?: string;\n}\n\nexport interface FafaDoc {\n /** `.fafa` spec version this document is authored against, e.g. `\"1.0\"` — not `agent.version`. */\n version?: string;\n agent?: FafaAgent;\n capabilities?: FafaCapability[];\n endpoints?: FafaEndpoint[];\n provenance?: Record<string, unknown>;\n metadata?: { persona?: string; cards?: PackExtras; [key: string]: unknown };\n [key: string]: unknown;\n}\n\nexport interface A2AExtension {\n uri: string;\n description: string;\n required: boolean;\n params: Record<string, unknown>;\n}\n\nexport interface ProjectedA2A {\n name: string;\n description: string;\n supportedInterfaces: Array<{\n url: string;\n protocolBinding: string;\n protocolVersion: string;\n }>;\n /** Omitted entirely when `agent.vendor` or `agent.homepage` is absent — A2A optional, never a guessed org name. */\n provider?: { organization: string; url: string };\n version: string;\n capabilities: {\n streaming: boolean;\n pushNotifications: boolean;\n extendedAgentCard: boolean;\n extensions: A2AExtension[];\n };\n defaultInputModes: string[];\n defaultOutputModes: string[];\n skills: Array<{\n id: string;\n name: string;\n description: string;\n tags: string[];\n inputModes?: string[];\n }>;\n}\n\nexport function a2aEndpoints(fafa: FafaDoc): FafaEndpoint[] {\n return (fafa.endpoints ?? []).filter(\n (e) => String(e.protocol ?? '').toLowerCase() === 'a2a' && e.location,\n );\n}\n\n/** Authored A2A endpoints, else a single `doorUrl`. Never invents a door. */\nexport function a2aDoors(fafa: FafaDoc, opts: { doorUrl?: string } = {}): FafaEndpoint[] {\n const fromDoc = a2aEndpoints(fafa);\n if (fromDoc.length > 0) {return fromDoc;}\n const door = opts.doorUrl?.trim();\n if (door) {\n return [{ protocol: 'a2a', location: door, version: A2A_PROTOCOL_VERSION }];\n }\n return [];\n}\n\n/** Where the `.fafa` itself is served — the same door the catalog's `agent`\n * row points at, so a card and a catalog never disagree about it. Left off\n * the card, rather than guessed, when the `.fafa` names no domain. */\nfunction fafaPassportUrl(fafa: FafaDoc): string | undefined {\n try {\n return `https://${fafaDomain(fafa)}/.well-known/fafa`;\n } catch {\n return undefined;\n }\n}\n\n/**\n * FAF's context extension for the A2A card (BEST). Its `params` are a superset\n * of {@link fafContextBlock}, enriched with `.fafa`-specific identity that only\n * makes sense for an agent card (agentId, passport, the full FAF media-type\n * family). Nests the base block's `faf`/`mediaType` under `provenance` rather\n * than flattening them, per the extension's own shape (`§7` of the field\n * mapping). The Server Card and registry `_meta` stay on the plain\n * {@link fafContextBlock} shape.\n */\nexport function fafaContextExtension(fafa: FafaDoc, faf: FafData, opts: ContextBlockOptions = {}): A2AExtension {\n const block = fafContextBlock(faf, opts);\n const agent = fafa.agent ?? {};\n const params: Record<string, unknown> = {\n fafaSpecVersion: String(fafa.version ?? FAFA_SPEC_VERSION),\n mediaTypes: [...FAF_MEDIA_TYPES],\n provenance: { faf: block.faf, mediaType: block.mediaType },\n generated: block.generated,\n };\n if (agent.id) {params.agentId = agent.id;}\n const passport = fafaPassportUrl(fafa);\n if (passport) {params.passport = passport;}\n return {\n uri: A2A_CONTEXT_URI,\n description: 'FAF passport and project DNA as typed parts',\n required: false,\n params,\n };\n}\n\n/** `text/plain` plus any FAF media type a capability's `cites_spec` names. */\nfunction defaultA2AInputModes(fafa: FafaDoc): string[] {\n const cited = new Set<string>();\n for (const c of fafa.capabilities ?? []) {\n if (c.cites_spec && (FAF_MEDIA_TYPES as readonly string[]).includes(c.cites_spec)) {\n cited.add(c.cites_spec);\n }\n }\n return ['text/plain', ...cited];\n}\n\n/**\n * The A2A Agent Card from a `.fafa`: every field comes from the document, and\n * `capabilities.extensions` holds exactly the extensions passed (none by default).\n */\nexport function projectA2ACard(\n fafa: FafaDoc,\n opts: { doorUrl?: string; extensions?: A2AExtension[] } = {},\n): ProjectedA2A {\n const agent = fafa.agent ?? {};\n const doors = a2aDoors(fafa, opts);\n if (doors.length === 0) {\n throw new Error(\n \"No A2A endpoint in .fafa (need endpoints[].protocol: a2a + location). Will not invent a door.\",\n );\n }\n const name = String(agent.displayName ?? fafa.metadata?.persona ?? agent.name ?? '').trim();\n const description = String(agent.description ?? '').trim();\n const version = String(agent.version ?? '').trim();\n if (!name || !description || !version) {\n throw new Error('A2A card needs agent.displayName|name, description, version in .fafa');\n }\n // provider is A2A-optional: emit it only when both halves are real, never a guessed org name.\n const organization = String(agent.vendor ?? '').trim();\n const homepage = String(agent.homepage ?? '').trim();\n const provider = organization && homepage ? { organization, url: homepage } : undefined;\n\n const skills = (fafa.capabilities ?? []).map((c) => {\n const id = String(c.name ?? '').trim();\n if (!id) {throw new Error('A2A skill missing capabilities[].name');}\n const tags = Array.isArray(c.tags) ? c.tags.map(String) : [];\n const inputModes =\n c.cites_spec && (FAF_MEDIA_TYPES as readonly string[]).includes(c.cites_spec)\n ? [c.cites_spec, 'text/plain']\n : undefined;\n return {\n id,\n name: id,\n description: String(c.description ?? '').trim() || id,\n tags,\n ...(inputModes ? { inputModes } : {}),\n };\n });\n\n return {\n name,\n description,\n supportedInterfaces: doors.map((e) => ({\n url: String(e.location),\n protocolBinding: A2A_PROTOCOL_BINDING,\n protocolVersion: String(e.version ?? A2A_PROTOCOL_VERSION),\n })),\n ...(provider ? { provider } : {}),\n version,\n capabilities: {\n // Endpoint existence isn't streaming support: FAFA's A2A door explicitly\n // errors message/stream today (-32004). Advertising true would be a\n // claim the door can't back up. Flip this only once a real per-door\n // streaming signal exists in .fafa/project.faf to key off of.\n streaming: false,\n pushNotifications: false,\n extendedAgentCard: false,\n extensions: [...(opts.extensions ?? [])],\n },\n defaultInputModes: defaultA2AInputModes(fafa),\n defaultOutputModes: ['text/plain', 'application/json'],\n skills,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Answers → .fafa\n// ---------------------------------------------------------------------------\n\n/** What someone tells the front door. Keys match the crosswalk's slot ids. */\nexport interface PackAnswers {\n display_name: string;\n handle: string;\n domain: string;\n description: string;\n version: string;\n endpoints?: Array<{ protocol: string; url: string }>;\n skills?: Array<{ name: string; description?: string; type?: string }>;\n organization?: string;\n organization_url?: string;\n homepage?: string;\n icon?: string;\n repository?: string;\n license?: string;\n tags?: string[];\n example_requests?: string[];\n packages?: PackPackage[];\n}\n\nconst HANDLE_RE = /^[a-z0-9][a-z0-9._-]*$/;\n/** npm's own package-name rule: lowercase, URL-safe, optionally `@scope/`, and\n * never starting with `-`, `.` or `_` (a leading `-` would be read as an option). */\nconst NPM_NAME_RE = /^(@[a-z0-9~][a-z0-9-._~]*\\/)?[a-z0-9~][a-z0-9-._~]*$/;\n/** PyPI's project-name rule (PEP 508): letters, digits, `.`, `_`, `-`, starting and\n * ending with a letter or digit. */\nconst PYPI_NAME_RE = /^[A-Za-z0-9]([A-Za-z0-9._-]*[A-Za-z0-9])?$/;\n/** Any other registry's identifier (oci, nuget, ...): no whitespace, and it starts\n * with a letter or digit, so it is never read as an option. */\nconst PACKAGE_ID_RE = /^[A-Za-z0-9][^\\s]*$/;\nconst ENDPOINT_PROTOCOLS = ['a2a', 'mcp'];\nconst DOMAIN_RE = /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,}$/;\n\nfunction clean(s: unknown): string {\n return String(s ?? '').trim();\n}\n\nfunction list(xs: unknown): string[] {\n return Array.isArray(xs) ? xs.map(clean).filter(Boolean) : [];\n}\n\n/** A domain as typed (\"https://www.Example.com/about\") reduced to the name (\"example.com\"). */\nfunction normaliseDomain(raw: unknown): string {\n return clean(raw).toLowerCase().replace(/^https?:\\/\\//, '').replace(/\\/.*$/, '').replace(/^www\\./, '');\n}\n\nfunction checkIdentity(a: PackAnswers, handle: string, domain: string): void {\n const missing = (['display_name', 'description', 'version'] as const).filter((k) => !clean(a[k]));\n if (missing.length) {throw new Error(`Missing answer: ${missing.join(', ')}`);}\n if (!HANDLE_RE.test(handle)) {throw new Error('Short name: lowercase letters, digits, dots, hyphens or underscores.');}\n if (!DOMAIN_RE.test(domain)) {throw new Error(`Domain \"${a.domain}\" is not a domain name (e.g. example.com).`);}\n}\n\nfunction capabilitiesFrom(a: PackAnswers, keywords: string[]): FafaCapability[] {\n return (a.skills ?? [])\n .filter((s) => clean(s.name))\n .map((s) => ({\n name: clean(s.name),\n type: clean(s.type) || 'tool',\n description: clean(s.description) || clean(s.name),\n // A2A requires tags on every skill: the keywords, else the skill's own name.\n tags: keywords.length ? keywords : [clean(s.name).toLowerCase()],\n }));\n}\n\n/** A package people install: an npm one must carry npm's own name, a PyPI one\n * PyPI's, and any other an identifier that cannot be read as an option — the\n * `.fafa` names it as the MCP server's stdio command, so nothing else gets through. */\nfunction packagesFrom(a: PackAnswers): PackPackage[] {\n const packages = (a.packages ?? []).filter((p) => clean(p.registryType) && clean(p.identifier));\n for (const p of packages) {\n const type = clean(p.registryType);\n const id = clean(p.identifier);\n if (type === 'npm' && !NPM_NAME_RE.test(id)) {\n throw new Error(`Package \"${id}\" is not an npm package name (e.g. weather-mcp or @acme/weather).`);\n }\n if (type === 'pypi' && !PYPI_NAME_RE.test(id)) {\n throw new Error(`Package \"${id}\" is not a PyPI package name (e.g. weather-mcp or weather_mcp).`);\n }\n if (type !== 'npm' && type !== 'pypi' && !PACKAGE_ID_RE.test(id)) {\n throw new Error(`Package \"${id}\" is not a ${type} package identifier: it must start with a letter or digit and have no spaces.`);\n }\n }\n return packages\n .map((p) => ({\n registryType: clean(p.registryType),\n identifier: clean(p.identifier),\n ...(clean(p.version) ? { version: clean(p.version) } : {}),\n }));\n}\n\n/** True for a whole http(s) URL with a host and no whitespace anywhere — not\n * just one that starts like one (`https://ok.example.com/x y` is refused). */\nfunction isHttpUrl(s: string): boolean {\n if (/\\s/.test(s)) {return false;}\n try {\n const u = new URL(s);\n return (u.protocol === 'http:' || u.protocol === 'https:') && u.hostname !== '';\n } catch {\n return false;\n }\n}\n\n/** A URL people call: http(s) only, speaking a2a or mcp. */\nfunction checkEndpoint(e: { protocol: string; url: string }): void {\n if (!isHttpUrl(clean(e.url))) {\n throw new Error(`Where it runs: \"${clean(e.url)}\" is not an http(s) URL (or give an npm package).`);\n }\n if (!ENDPOINT_PROTOCOLS.includes(clean(e.protocol).toLowerCase())) {\n throw new Error(`Protocol \"${clean(e.protocol)}\": a2a or mcp.`);\n }\n}\n\nfunction endpointsFrom(a: PackAnswers, packages: PackPackage[]): FafaEndpoint[] {\n const urls = (a.endpoints ?? []).filter((e) => clean(e.url));\n urls.forEach(checkEndpoint);\n const endpoints: FafaEndpoint[] = [\n ...urls.map((e) => ({ protocol: clean(e.protocol).toLowerCase(), transport: 'http', location: clean(e.url) })),\n ...packages.map((p) => ({ protocol: 'mcp', transport: 'stdio', location: p.identifier })),\n ];\n if (endpoints.length === 0) {throw new Error('Missing answer: endpoints (a URL, or a package people install)');}\n return endpoints;\n}\n\nfunction extrasFrom(a: PackAnswers, domain: string, keywords: string[], packages: PackPackage[]): PackExtras {\n const extras: PackExtras = { domain };\n const optional: Array<[keyof PackExtras, string]> = [\n ['repository', clean(a.repository)],\n ['icon', clean(a.icon)],\n ['organizationUrl', clean(a.organization_url)],\n ];\n for (const [key, value] of optional) {\n if (value) {(extras as Record<string, unknown>)[key] = value;}\n }\n if (keywords.length) {extras.keywords = keywords;}\n const examples = list(a.example_requests);\n if (examples.length) {extras.examples = examples;}\n if (packages.length) {extras.packages = packages;}\n return extras;\n}\n\n/** Write the `.fafa` a set of answers describes. Throws, naming the answer, when one is missing or malformed. */\nexport function answersToFafa(a: PackAnswers): FafaDoc {\n const handle = clean(a.handle).toLowerCase();\n const domain = normaliseDomain(a.domain);\n checkIdentity(a, handle, domain);\n const keywords = list(a.tags);\n const packages = packagesFrom(a);\n const agent: FafaAgent = {\n name: handle,\n displayName: clean(a.display_name),\n id: `urn:air:${domain}:agent:${handle}`,\n ...(clean(a.organization) ? { vendor: clean(a.organization) } : {}),\n version: clean(a.version),\n description: clean(a.description),\n homepage: clean(a.homepage) || `https://${domain}`,\n ...(clean(a.license) ? { license: clean(a.license) } : {}),\n };\n return {\n version: FAFA_SPEC_VERSION,\n agent,\n capabilities: capabilitiesFrom(a, keywords),\n endpoints: endpointsFrom(a, packages),\n metadata: { cards: extrasFrom(a, domain, keywords, packages) },\n };\n}\n\n/** The `.fafa` as the YAML document people keep. */\nexport function fafaYaml(fafa: FafaDoc): string {\n return stringify(fafa, { lineWidth: 0 });\n}\n\n// ---------------------------------------------------------------------------\n// .fafa → the other cards\n// ---------------------------------------------------------------------------\n\n/** Where the `.fafa` says it is published: `agent.id` (urn:air), else metadata, else the homepage host. */\nexport function fafaDomain(fafa: FafaDoc): string {\n const id = clean(fafa.agent?.id);\n const m = /^urn:air:([^:]+):/.exec(id);\n if (m) {return m[1];}\n const fromExtras = clean(fafa.metadata?.cards?.domain);\n if (fromExtras) {return fromExtras;}\n try {\n return new URL(clean(fafa.agent?.homepage)).hostname.replace(/^www\\./, '');\n } catch {\n throw new Error('The .fafa names no domain (agent.id urn:air, metadata.cards.domain or agent.homepage).');\n }\n}\n\n/** The stable short name a card is filed under: `agent.name`, lowercased and\n * reduced to the characters an identifier may carry. The `{name}` of\n * `urn:air:{publisher}:{namespace}:{name}` — never a display string. */\nexport function fafaHandle(fafa: FafaDoc): string {\n return handleOf(fafa);\n}\n\nfunction handleOf(fafa: FafaDoc): string {\n const h = clean(fafa.agent?.name).toLowerCase().replace(/[^a-z0-9._-]/g, '-').replace(/^-+|-+$/g, '');\n if (!h) {throw new Error('The .fafa needs agent.name (the short name).');}\n return h;\n}\n\n/** MCP names are reverse-DNS: example.com + weather → com.example/weather. */\nexport function mcpName(fafa: FafaDoc): string {\n return `${fafaDomain(fafa).split('.').reverse().join('.')}/${handleOf(fafa)}`;\n}\n\n/** Server Card and registry descriptions and titles cap at 100 characters. */\nfunction cap100(s: string): string {\n const t = s.replace(/\\s+/g, ' ').trim();\n return t.length <= 100 ? t : `${t.slice(0, 97).trimEnd()}...`;\n}\n\n/** The `.fafa`'s MCP endpoints at an http(s) URL — what a Server Card describes. */\nexport function mcpRemotes(fafa: FafaDoc): Array<{ type: string; url: string }> {\n return (fafa.endpoints ?? [])\n .filter((e) => clean(e.protocol).toLowerCase() === 'mcp' && /^https?:\\/\\//.test(clean(e.location)))\n .map((e) => ({ type: 'streamable-http', url: clean(e.location) }));\n}\n\nfunction repositoryOf(url: string): { url: string; source: string } | undefined {\n if (!url) {return undefined;}\n try {\n const host = new URL(url).hostname.replace(/^www\\./, '');\n return { url, source: host.split('.')[0] };\n } catch {\n return undefined;\n }\n}\n\n/** Identity shared by the Server Card and the registry entry. */\nfunction mcpIdentity(fafa: FafaDoc): Record<string, unknown> {\n const agent = fafa.agent ?? {};\n const extras = fafa.metadata?.cards ?? {};\n const description = clean(agent.description);\n const version = clean(agent.version);\n if (!description || !version) {throw new Error('An MCP card needs agent.description and agent.version in .fafa');}\n const out: Record<string, unknown> = {\n name: mcpName(fafa),\n version,\n description: cap100(description),\n };\n const title = clean(agent.displayName);\n if (title) {out.title = cap100(title);}\n const homepage = clean(agent.homepage);\n if (homepage) {out.websiteUrl = homepage;}\n const repo = repositoryOf(clean(extras.repository));\n if (repo) {out.repository = repo;}\n if (clean(extras.icon)) {out.icons = [{ src: clean(extras.icon) }];}\n return out;\n}\n\n/** The packages people install, from the `.fafa`, as a registry entry lists them. */\nfunction registryPackages(fafa: FafaDoc): Array<Record<string, unknown>> {\n return (fafa.metadata?.cards?.packages ?? []).map((p) => ({\n registryType: clean(p.registryType),\n identifier: clean(p.identifier),\n ...(clean(p.version) ? { version: clean(p.version) } : {}),\n transport: { type: 'stdio' },\n }));\n}\n\n/** True when the `.fafa` gives a registry entry: a package or a remote MCP URL. */\nexport function hasRegistryEntry(fafa: FafaDoc): boolean {\n return mcpRemotes(fafa).length > 0 || registryPackages(fafa).length > 0;\n}\n\n/** The registry identity from the `.fafa`: `name`, and `title` when it has one. */\nexport function registryIdentity(fafa: FafaDoc): { name: string; title?: string } {\n const title = clean(fafa.agent?.displayName);\n return { name: mcpName(fafa), ...(title ? { title: cap100(title) } : {}) };\n}\n\n/** The MCP Server Card for a remote MCP server. With a project.faf (`faf`,\n * BEST) it carries FAF's context block at `_meta[\"one.faf/context\"]`. */\nexport function projectServerCard(fafa: FafaDoc, faf?: FafData, opts: ContextBlockOptions = {}): Record<string, unknown> {\n const remotes = mcpRemotes(fafa);\n if (remotes.length === 0) {\n throw new Error('A Server Card describes a remote MCP server: the .fafa has no mcp endpoint at an http(s) URL.');\n }\n return {\n $schema: SERVER_CARD_SCHEMA,\n ...mcpIdentity(fafa),\n remotes,\n ...(faf ? { _meta: { 'one.faf/context': fafContextBlock(faf, opts) } } : {}),\n };\n}\n\n/** The MCP Registry `server.json` (publishing it stays the owner's step). With\n * a project.faf (`faf`, BEST) it carries FAF's context block in the registry's\n * publisher-provided `_meta`. */\nexport function projectServerJson(fafa: FafaDoc, faf?: FafData, opts: ContextBlockOptions = {}): Record<string, unknown> {\n const remotes = mcpRemotes(fafa);\n const packages = registryPackages(fafa);\n if (remotes.length === 0 && packages.length === 0) {\n throw new Error('A registry entry needs a package people install or a remote MCP URL.');\n }\n return {\n $schema: SERVER_JSON_SCHEMA,\n ...mcpIdentity(fafa),\n ...(packages.length ? { packages } : {}),\n ...(remotes.length ? { remotes } : {}),\n ...(faf ? { _meta: registryMeta(faf, opts) } : {}),\n };\n}\n\nexport type PackCard = 'a2a' | 'server_card' | 'server_json' | 'ai_catalog' | 'ard' | 'fafa';\n\nexport interface CatalogRow {\n identifier: string;\n displayName: string;\n type: string;\n description: string;\n url: string;\n version?: string;\n updatedAt: string;\n}\n\n/** Options for the catalog rows. */\nexport interface CatalogRowOptions {\n /** `updatedAt` for the rows; otherwise now. */\n now?: string;\n /** List the `.fafa` itself (served at /.well-known/fafa). Default true: it is\n * the source of the cards — what makes them BETTER. */\n listFafa?: boolean;\n /** Public URL of the A2A card; default the domain's /.well-known/agent-card.json. */\n a2aCardUrl?: string;\n /** An A2A door when the `.fafa` names none (as `faf cards --door-url`). */\n doorUrl?: string;\n}\n\n/** Where the A2A card is served — only when it is asked for and the `.fafa`\n * names an A2A door, so a catalog never lists a card nobody wrote. */\nfunction a2aCardUrlFor(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions): string | undefined {\n if (!cards.includes('a2a') || a2aDoors(fafa, opts).length === 0) {return undefined;}\n return opts.a2aCardUrl ?? `https://${fafaDomain(fafa)}/.well-known/agent-card.json`;\n}\n\n/** One row per card the domain serves: the A2A card (when the `.fafa` names an\n * A2A door), the Server Card (when it names a remote MCP URL), and the `.fafa`. */\nexport function catalogRows(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions = {}): CatalogRow[] {\n const domain = fafaDomain(fafa);\n const handle = handleOf(fafa);\n const agent = fafa.agent ?? {};\n const displayName = clean(agent.displayName) || clean(agent.name);\n const description = clean(agent.description);\n const version = clean(agent.version);\n const now = opts.now ?? new Date().toISOString();\n const row = (ns: string, type: string, url: string): CatalogRow => ({\n identifier: `urn:air:${domain}:${ns}:${handle}`,\n displayName,\n type,\n description,\n url,\n ...(version ? { version } : {}),\n updatedAt: now,\n });\n const rows: CatalogRow[] = [];\n const a2aUrl = a2aCardUrlFor(fafa, cards, opts);\n if (a2aUrl) {rows.push(row('a2a', CARD_MEDIA_TYPES.a2a, a2aUrl));}\n if (cards.includes('server_card')) {\n const remote = mcpRemotes(fafa)[0];\n if (remote) {rows.push(row('mcp', CARD_MEDIA_TYPES.server_card, `${remote.url.replace(/\\/+$/, '')}/server-card`));}\n }\n if (opts.listFafa !== false) {rows.push(row('agent', CARD_MEDIA_TYPES.fafa, `https://${domain}/.well-known/fafa`));}\n return rows;\n}\n\n/** Who publishes a catalog: AI Catalog's `host` object. */\nexport interface CatalogHost {\n displayName: string;\n identifier?: string;\n}\n\n/**\n * The catalog's `host` — who publishes these entries. Naming one is what\n * lifts a catalog from Level 1 \"minimal\" to Level 2 \"discoverable\", and\n * `displayName` is the field that does it: the validator takes an empty one\n * as *invalid*, not as minimal. So a `.fafa` that names nobody gets no host\n * at all — a minimal catalog that validates beats a discoverable one that\n * does not. `identifier` rides along whenever the `.fafa` says where it\n * lives, and is left off when it does not.\n */\nexport function catalogHost(fafa: FafaDoc): CatalogHost | undefined {\n const agent = fafa.agent ?? {};\n const displayName = clean(agent.vendor) || clean(agent.displayName) || clean(agent.name);\n if (!displayName) {return undefined;}\n let identifier: string | undefined;\n try {\n identifier = fafaDomain(fafa);\n } catch {\n identifier = undefined;\n }\n return { displayName, ...(identifier ? { identifier } : {}) };\n}\n\n/** The AI Catalog for the domain: every row above, with the host named. */\nexport function projectAiCatalog(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions = {}): Record<string, unknown> {\n const host = catalogHost(fafa);\n return {\n specVersion: AI_CATALOG_SPEC_VERSION,\n ...(host ? { host } : {}),\n entries: catalogRows(fafa, cards, opts),\n };\n}\n\n/**\n * The search hints ARD reads, from the `.fafa`: `metadata.cards.keywords` and\n * `metadata.cards.examples`. An entry with no `representativeQueries` is, in\n * the conformance CLI's own words, \"a valid catalog entry but not a\n * discoverable ARD entry\" — the semantic index is built from that term.\n */\nexport function ardHints(fafa: FafaDoc): { tags?: string[]; representativeQueries?: string[] } {\n const extras = fafa.metadata?.cards ?? {};\n const tags = list(extras.keywords);\n const queries = list(extras.examples);\n return {\n ...(tags.length ? { tags } : {}),\n ...(queries.length ? { representativeQueries: queries } : {}),\n };\n}\n\n/** The ARD manifest: the catalog, plus the search hints ARD reads. ARD builds\n * on ai-catalog (spec §4), so the document is the same shape — the entries\n * carry more. */\nexport function projectArd(fafa: FafaDoc, cards: PackCard[], opts: CatalogRowOptions = {}): Record<string, unknown> {\n const host = catalogHost(fafa);\n const hints = ardHints(fafa);\n return {\n specVersion: AI_CATALOG_SPEC_VERSION,\n ...(host ? { host } : {}),\n entries: catalogRows(fafa, cards, opts).map((r) => ({ ...r, ...hints })),\n };\n}\n\nexport interface PackOptions extends ContextBlockOptions {\n /** Which cards to build; the `.fafa` is always written. */\n cards: PackCard[];\n /** `updatedAt` for catalog rows (tests); otherwise now. */\n now?: string;\n /** List the `.fafa` itself in the catalog and ARD manifest (it is then served\n * at /.well-known/fafa). Default true; `false` leaves it out. */\n listFafa?: boolean;\n /** Extensions to put on the A2A card, besides FAF's own (added with `faf`). */\n a2aExtensions?: A2AExtension[];\n /** project.faf (BEST): adds FAF's context block to the A2A card, the Server\n * Card and server.json. Without it the cards are plain (BETTER). */\n faf?: FafData;\n}\n\nexport interface Pack {\n fafa: FafaDoc;\n fafaText: string;\n a2a?: ProjectedA2A;\n server_card?: Record<string, unknown>;\n server_json?: Record<string, unknown>;\n ai_catalog?: Record<string, unknown>;\n ard?: Record<string, unknown>;\n}\n\n/** Every card a `.fafa` can feed, for the cards asked. */\nexport function projectPack(fafa: FafaDoc, opts: PackOptions): Pack {\n const want = new Set(opts.cards);\n const pack: Pack = { fafa, fafaText: fafaYaml(fafa) };\n const { faf } = opts;\n if (want.has('a2a')) {\n const extensions = [...(opts.a2aExtensions ?? []), ...(faf ? [fafaContextExtension(fafa, faf, opts)] : [])];\n pack.a2a = projectA2ACard(fafa, { extensions });\n }\n if (want.has('server_card')) {pack.server_card = projectServerCard(fafa, faf, opts);}\n if (want.has('server_json')) {pack.server_json = projectServerJson(fafa, faf, opts);}\n const rowOpts = { now: opts.now, listFafa: opts.listFafa };\n if (want.has('ai_catalog')) {pack.ai_catalog = projectAiCatalog(fafa, opts.cards, rowOpts);}\n if (want.has('ard')) {pack.ard = projectArd(fafa, opts.cards, rowOpts);}\n return pack;\n}\n\n/** Answers in, the `.fafa` and every card asked for out. */\nexport function buildPack(answers: PackAnswers, opts: PackOptions): Pack {\n return projectPack(answersToFafa(answers), opts);\n}\n",
97
+ "import { existsSync } from 'fs';\nimport { basename, dirname, join } from 'path';\nimport { deprecate } from 'node:util';\nimport { parse } from 'yaml';\nimport type { FafData } from '../core/types.js';\nimport { makeDirInside, readUtf8, resolveInside } from '../core/safe-write.js';\nimport { writeRendered, type RenderedResult } from '../core/render-hash.js';\nimport { editJsonText, upsertJsonRows } from '../core/json-edit.js';\nimport {\n a2aDoors,\n ardHints,\n catalogHost,\n catalogRows,\n fafaContextExtension,\n hasRegistryEntry,\n mcpRemotes,\n projectA2ACard,\n projectServerCard,\n registryIdentity,\n type CatalogHost,\n type FafaDoc,\n type ProjectedA2A,\n} from './pack.js';\nimport {\n fafContextBlock,\n buildServerCard,\n hasRegistryMark,\n hasServerCardMark,\n registryMeta,\n registryName,\n registryTitle,\n type ServerCardOptions,\n} from './servercard.js';\nimport { A2A_CONTEXT_URI } from './context-block.js';\n\nexport { A2A_CONTEXT_URI } from './context-block.js';\n// The .fafa types, the A2A card core and its helpers live in pack.ts (pure, no\n// Node built-ins) so the CLI and a browser front door share one projector.\nexport {\n A2A_PROTOCOL_BINDING,\n A2A_PROTOCOL_VERSION,\n FAF_MEDIA_TYPES,\n a2aEndpoints,\n a2aDoors,\n} from './pack.js';\nexport type { FafaAgent, FafaCapability, FafaEndpoint, FafaDoc, ProjectedA2A } from './pack.js';\n\nexport type CardTarget = 'a2a' | 'mcp' | 'registry' | 'catalog' | 'ard';\nexport const CARD_TARGETS: CardTarget[] = ['a2a', 'mcp', 'registry', 'catalog', 'ard'];\n\nexport interface ProjectCardsOptions extends ServerCardOptions {\n /** Public URL of the emitted A2A card (catalog row). */\n a2aCardUrl?: string;\n /** Caller-supplied A2A door when `.fafa` has no `endpoints[].protocol: a2a`. */\n doorUrl?: string;\n}\n\nexport interface CatalogEntry {\n identifier: string;\n displayName?: string;\n type: string;\n description?: string;\n url: string;\n updatedAt?: string;\n /** ARD's search hints — on the ARD manifest's rows only. */\n tags?: string[];\n representativeQueries?: string[];\n}\n\nexport interface AiCatalog {\n specVersion: string;\n host?: Record<string, unknown>;\n entries: CatalogEntry[];\n [key: string]: unknown;\n}\n\nexport interface ProjectedCards {\n /** faf's context block — only when a project.faf was given (BEST). */\n block?: Record<string, unknown>;\n a2a?: ProjectedA2A;\n mcp?: Record<string, unknown>;\n registry?: {\n name: string;\n title?: string;\n /** FAF's context block (BEST); absent from a plain registry identity (BETTER). */\n _meta?: Record<string, unknown>;\n };\n catalog?: CatalogEntry[];\n /** The same rows, carrying ARD's search hints — the ARD manifest. */\n ard?: CatalogEntry[];\n /** Who publishes the catalog — written only into a catalog that names\n * nobody yet. An existing `host` is the site's, and is never touched. */\n catalogHost?: CatalogHost;\n}\n\nexport function readFafa(path: string): FafaDoc {\n // A .fafa that links out of its folder is refused (SafePathError), never read:\n // a hostile repo's agent.fafa -> ~/.aws/credentials would otherwise be parsed\n // and quoted in an error. A link to a same-name file inside the folder is fine.\n return parse(readUtf8(resolveInside(dirname(path), basename(path)))) as FafaDoc;\n}\n\n/** Discover agent.fafa / .fafa (cwd, then one parent). */\nexport function findFafaFile(dir: string = process.cwd()): string | null {\n const candidates = ['agent.fafa', '.fafa'];\n for (const name of candidates) {\n const full = join(dir, name);\n if (existsSync(full)) {return full;}\n }\n const parent = dirname(dir);\n if (parent !== dir) {\n for (const name of candidates) {\n const full = join(parent, name);\n if (existsSync(full)) {return full;}\n }\n }\n return null;\n}\n\n/** Build the A2A Agent Card (JSON) from a .fafa: the core card\n * ({@link projectA2ACard}). With a project.faf (BEST) it carries FAF's\n * context extension; with none (BETTER) it is the plain A2A card — the\n * .fafa is its source, and nothing on it points at a project.faf. */\nexport function buildA2ACard(\n fafa: FafaDoc,\n faf?: FafData,\n opts: ProjectCardsOptions = {},\n): ProjectedA2A {\n // Checked before the extension is built, so a card with no door fails the\n // same way it always has, before anything reads the .faf.\n if (a2aDoors(fafa, opts).length === 0) {\n throw new Error(\n \"No A2A endpoint in .fafa (need endpoints[].protocol: a2a + location). Will not invent a door.\",\n );\n }\n return projectA2ACard(fafa, {\n doorUrl: opts.doorUrl,\n extensions: faf ? [fafaContextExtension(fafa, faf, opts)] : [],\n });\n}\n\n/** @deprecated Use {@link buildA2ACard}. Removed in the next major. */\nexport const generateA2ACard = deprecate(\n buildA2ACard,\n 'faf-cli: generateA2ACard is deprecated, use buildA2ACard',\n 'FAF0003',\n);\n\n/**\n * The catalog rows for this agent — the pack projector's own\n * ({@link catalogRows}), so `faf cards` and the pack list the same rows: the\n * A2A card (when the `.fafa` names an A2A door), the Server Card (when it names\n * a remote MCP URL) and the `.fafa` itself, keyed\n * `urn:air:{publisher}:{namespace}:{name}`, where the publisher is the domain\n * the `.fafa` *declares* (`agent.id`'s urn:air, `metadata.cards.domain`, else\n * the homepage host) and the name is the handle.\n *\n * Throws, rather than inventing either half, when the `.fafa` names no domain:\n * an identifier is a catalog's primary key, and `urn:air:local:…` published to\n * the world is worse than a refusal a line of YAML fixes.\n */\nexport function catalogEntriesFor(\n fafa: FafaDoc,\n faf: FafData = {},\n opts: ProjectCardsOptions = {},\n): CatalogEntry[] {\n return catalogRows(fafa, ['a2a', 'server_card'], {\n now: opts.now ?? (faf.generated as string | undefined) ?? new Date().toISOString(),\n a2aCardUrl: opts.a2aCardUrl,\n doorUrl: opts.doorUrl,\n });\n}\n\n/** The row in `entries` that is faf's own row `row`: the one whose\n * identifier is exactly faf's (`urn:air:<host>:a2a:<slug>` or\n * `urn:air:<host>:agent:<slug>`). Never matched by type or URL — a row of\n * yours for another agent, or another card of the same type, is not faf's. */\nfunction catalogMatchIndex(entries: CatalogEntry[], row: CatalogEntry): number {\n return entries.findIndex((e) => e.identifier === row.identifier);\n}\n\n/** Upsert projector entries into an existing catalog. Leaves every other row\n * alone: a row is faf's only when its identifier is exactly faf's (never by\n * type or URL). On match, only url / type / updatedAt move — host copy\n * (title, tags) stays; any other faf row is appended. `host` names the\n * publisher on a catalog that names none — an existing one is the site's own\n * and stays as it is. */\nexport function upsertCatalog(\n existing: AiCatalog | undefined,\n incoming: CatalogEntry[],\n host?: CatalogHost,\n): AiCatalog {\n const opened: AiCatalog = existing\n ? { ...existing, entries: [...(existing.entries ?? [])] }\n : { specVersion: '1.0', entries: [] };\n // A host the catalog already names is the site's own — never overwritten.\n // A missing one is added where the spec shows it: straight after specVersion.\n const base: AiCatalog =\n host && opened.host === undefined\n ? (({ specVersion, ...rest }) => ({ specVersion, host: { ...host }, ...rest }))(opened)\n : opened;\n for (const row of incoming) {\n const i = catalogMatchIndex(base.entries, row);\n if (i >= 0) {\n base.entries[i] = {\n ...base.entries[i],\n url: row.url,\n type: row.type,\n ...(row.updatedAt ? { updatedAt: row.updatedAt } : {}),\n };\n } else {\n base.entries.push(row);\n }\n }\n return base;\n}\n\n/** The keys of a catalog row faf updates in place (its own row only). */\nconst CATALOG_ROW_UPDATES = ['url', 'type', 'updatedAt'] as const;\n\n/** faf's rows as they will be written over `text`'s: a row whose url and type\n * are unchanged keeps the updatedAt it has (a run that changes nothing writes\n * nothing); a row whose url or type changed is stamped `changedAt`, so a\n * reader that refreshes on updatedAt sees the change. New rows keep their own.\n * `text` that is not JSON is left to upsertJsonRows, which reports it. */\nfunction restamp(text: string, incoming: CatalogEntry[], changedAt: string): CatalogEntry[] {\n let existing: CatalogEntry[] = [];\n try {\n const entries = (JSON.parse(text.replace(/^\\uFEFF/, '')) as { entries?: unknown }).entries;\n existing = Array.isArray(entries) ? (entries as CatalogEntry[]) : [];\n } catch {\n return incoming;\n }\n return incoming.map((row) => {\n const old = existing.find((e) => e && typeof e === 'object' && e.identifier === row.identifier);\n if (!old) {return row;}\n const same = old.url === row.url && old.type === row.type;\n return { ...row, updatedAt: same ? (old.updatedAt ?? row.updatedAt) : changedAt };\n });\n}\n\n/**\n * {@link upsertCatalog} as a text edit of the catalog's JSON: faf's own rows\n * (identifier exactly faf's) get their url / type / updatedAt values changed\n * in place, faf's other rows are appended after the last entry, and every\n * other byte — your rows, their order and layout, other keys — stays. With no\n * text (no catalog yet) a new catalog is returned. `host` names the publisher\n * (AI Catalog Level 2 \"discoverable\") and is added, after `specVersion`, only\n * to a catalog that names none: a `host` already in the file is the site's own\n * and is left byte for byte. Throws a JsonEditError, changing nothing, when\n * the catalog cannot be edited that way (not a JSON object, `entries` not an\n * array, faf's row there twice, …).\n */\nexport function upsertCatalogText(\n text: string | null,\n incoming: CatalogEntry[],\n host?: CatalogHost,\n changedAt: string = new Date().toISOString(),\n): { text: string; changed: boolean } {\n if (text === null) {\n const fresh = { specVersion: '1.0', ...(host ? { host } : {}), entries: incoming };\n return { text: `${JSON.stringify(fresh, null, 2)}\\n`, changed: true };\n }\n const rows = upsertJsonRows(text, 'entries', restamp(text, incoming, changedAt) as unknown as Record<string, unknown>[], {\n id: 'identifier',\n update: CATALOG_ROW_UPDATES,\n });\n if (!host || namesHost(rows.text)) {return rows;}\n const named = editJsonText(rows.text, { host }, { '': { host: ['specVersion'] } });\n return { text: named.text, changed: rows.changed || named.changed };\n}\n\n/** True when the catalog JSON already names a `host` — any value, including\n * null or one the spec would refuse. Whatever is there is the site's. */\nfunction namesHost(text: string): boolean {\n try {\n const doc = JSON.parse(text) as Record<string, unknown>;\n return Object.prototype.hasOwnProperty.call(doc, 'host');\n } catch {\n return true; // Unparseable: add nothing.\n }\n}\n\n/** The cards an agent.fafa gives with no project.faf (BETTER): the A2A card\n * (when it names an A2A door), the MCP Server Card (when it names a remote MCP\n * URL), the registry server.json (a remote or a package), the AI Catalog, ARD. */\nexport function betterTargets(fafa: FafaDoc, opts: ProjectCardsOptions = {}): CardTarget[] {\n return [\n ...(a2aDoors(fafa, opts).length > 0 ? ['a2a' as const] : []),\n ...(mcpRemotes(fafa).length > 0 ? ['mcp' as const] : []),\n ...(hasRegistryEntry(fafa) ? ['registry' as const] : []),\n 'catalog',\n 'ard',\n ];\n}\n\n/**\n * Project the cards. The ladder — BETTER is the .fafa, BEST is project.faf:\n * an agent.fafa alone gives the plain cards ({@link betterTargets}); a\n * project.faf, resident and used, adds FAF's context block to each (the A2A\n * card's extension, the Server Card's and server.json's `_meta`). A card's\n * identity comes from the .fafa at both rungs. With a project.faf and no MCP\n * endpoint in the .fafa (an MCP server's own repo), the Server Card and the\n * registry identity come from project.faf, as `faf server-card` writes them.\n */\nexport function projectCards(input: {\n /** project.faf — absent means BETTER. */\n faf?: FafData;\n fafa?: FafaDoc;\n targets?: CardTarget[];\n opts?: ProjectCardsOptions;\n}): ProjectedCards {\n const opts = input.opts ?? {};\n const faf = input.faf;\n const fafa = input.fafa;\n const all = faf ? CARD_TARGETS : fafa ? betterTargets(fafa, opts) : [];\n const wanted = new Set(input.targets?.length ? input.targets : all);\n const out: ProjectedCards = {};\n if (faf) {out.block = fafContextBlock(faf, opts);}\n\n if (wanted.has('mcp')) {\n if (fafa && mcpRemotes(fafa).length > 0) {\n out.mcp = projectServerCard(fafa, faf, opts);\n } else if (faf) {\n out.mcp = buildServerCard(faf, opts);\n } else {\n throw new Error('A Server Card needs an MCP endpoint at an http(s) URL in the .fafa, or a project.faf.');\n }\n }\n if (wanted.has('registry')) {\n if (fafa && hasRegistryEntry(fafa)) {\n out.registry = { ...registryIdentity(fafa), ...(faf ? { _meta: registryMeta(faf, opts) } : {}) };\n } else if (faf) {\n const title = registryTitle(faf);\n out.registry = {\n name: registryName(faf),\n ...(title ? { title } : {}),\n _meta: registryMeta(faf, opts),\n };\n } else {\n throw new Error('A registry entry needs a package or a remote MCP URL in the .fafa, or a project.faf.');\n }\n }\n\n if (wanted.has('a2a') || wanted.has('catalog') || wanted.has('ard')) {\n if (!input.fafa) {\n if (input.targets?.some((t) => t === 'a2a' || t === 'catalog' || t === 'ard')) {\n throw new Error('A2A/catalog/ARD require a .fafa (agent.fafa). Will not invent an agent.');\n }\n }\n }\n\n if (wanted.has('a2a') && input.fafa) {\n if (a2aDoors(input.fafa, opts).length === 0) {\n if (input.targets?.includes('a2a')) {\n throw new Error(\n \"No A2A endpoint in .fafa (need endpoints[].protocol: a2a + location). Will not invent a door.\",\n );\n }\n } else {\n out.a2a = buildA2ACard(input.fafa, faf, opts);\n }\n }\n\n if ((wanted.has('catalog') || wanted.has('ard')) && input.fafa) {\n const rows = catalogEntriesFor(input.fafa, faf, opts);\n if (wanted.has('catalog')) {out.catalog = rows;}\n if (wanted.has('ard')) {\n // ARD builds on ai-catalog: the same rows, carrying the hints its\n // semantic index is built from.\n const hints = ardHints(input.fafa);\n out.ard = rows.map((r) => ({ ...r, ...hints }));\n }\n const host = catalogHost(input.fafa);\n if (host) {out.catalogHost = host;}\n }\n\n assertSameBlock(out);\n return out;\n}\n\n/**\n * Same underlying context on every emitted door. MCP and registry carry\n * {@link fafContextBlock} byte-identically. A2A's extension params are a\n * deliberate, richer superset (agentId, passport, mediaTypes — see\n * {@link fafaExtensionParams}), so the check there is narrower: its nested\n * `provenance.faf` / `provenance.mediaType` must match the same block's\n * `faf` / `mediaType` — the same pointer, not a byte-identical payload.\n */\nexport function assertSameBlock(cards: ProjectedCards): void {\n // BETTER: no project.faf, so no block on any card.\n if (!cards.block) {return;}\n const want = JSON.stringify(cards.block);\n const got: string[] = [];\n if (cards.mcp) {\n const meta = cards.mcp._meta as { 'one.faf/context': unknown };\n got.push(JSON.stringify(meta['one.faf/context']));\n }\n if (cards.registry?._meta) {\n const pp = cards.registry._meta['io.modelcontextprotocol.registry/publisher-provided'] as {\n 'one.faf/context': unknown;\n };\n got.push(JSON.stringify(pp['one.faf/context']));\n }\n for (const g of got) {\n if (g !== want) {\n throw new Error('context block drifted across card targets — one projector, one block');\n }\n }\n if (cards.a2a) {\n const ext = cards.a2a.capabilities.extensions?.find((e) => e.uri === A2A_CONTEXT_URI);\n if (!ext) {throw new Error('A2A card has no FAF context extension, but a project.faf was given');}\n const params = ext.params as {\n provenance?: { faf?: unknown; mediaType?: unknown };\n };\n const block = cards.block as { faf?: unknown; mediaType?: unknown };\n if (\n params.provenance?.faf !== block.faf ||\n params.provenance?.mediaType !== block.mediaType\n ) {\n throw new Error('A2A extension provenance drifted from the context block — one context, every door');\n }\n }\n}\n\n/** True when `bytes` are an A2A Agent Card faf wrote: JSON whose\n * `capabilities.extensions` carry the FAF context extension\n * ({@link A2A_CONTEXT_URI}), as every card faf has written does. */\nexport function hasA2ACardMark(bytes: Uint8Array): boolean {\n let j: unknown;\n try {\n j = JSON.parse(new TextDecoder().decode(bytes).replace(/^\\uFEFF/, ''));\n } catch {\n return false;\n }\n const caps = typeof j === 'object' && j !== null ? (j as { capabilities?: { extensions?: unknown } }).capabilities : undefined;\n const exts = caps?.extensions;\n return Array.isArray(exts) && exts.some(e => typeof e === 'object' && e !== null && (e as { uri?: unknown }).uri === A2A_CONTEXT_URI);\n}\n\n/** True when `bytes` carry any of faf's card marks: the MCP Server Card's\n * `_meta[\"one.faf/context\"]`, a registry server.json's publisher-provided\n * `one.faf/context`, or the A2A card's FAF context extension. */\nexport function hasFafCardMark(bytes: Uint8Array): boolean {\n return hasServerCardMark(bytes) || hasRegistryMark(bytes) || hasA2ACardMark(bytes);\n}\n\n/** Options for {@link writeJson}. */\nexport interface WriteJsonOptions {\n /** True when the bytes already at the path carry faf's older mark (a file\n * faf wrote before render hashes). Default: one of faf's card marks\n * ({@link hasFafCardMark}). */\n owns?: (existing: Buffer) => boolean;\n /** faf's mark in words, for the refusal. */\n mark?: string;\n /** Replace a file faf cannot prove it wrote anyway — the explicit overwrite (`--force`). */\n force?: boolean;\n}\n\n/** Write `value` as JSON (2-space, final newline) with faf's render hash at\n * `_meta[\"one.faf/render\"]` — atomically, and never through a link that\n * leaves `root` (default: the file's own folder) or dangles. The folder is\n * created when missing, never through a link that leaves `root`. A file\n * already there is replaced only when it is byte for byte what faf last wrote\n * (its render hash still fits); a file edited since, one without faf's mark,\n * or one from before 7.13 that is not exactly this JSON is refused\n * (SafePathError `not-owned`) and left byte for byte, unless `force`.\n * Returns what it did: `created`, `updated`, or `unchanged` (the file\n * already held exactly these bytes, and nothing was written). */\nexport function writeJson(path: string, value: unknown, root?: string, write: WriteJsonOptions = {}): RenderedResult {\n makeDirInside(root ?? dirname(path), dirname(path));\n return writeRendered(path, `${JSON.stringify(value, null, 2)}\\n`, {\n root: root ?? dirname(path),\n format: 'json',\n hasMark: write.owns ?? hasFafCardMark,\n mark: write.mark ?? 'FAF context-block (a faf card mark)',\n force: write.force,\n }).result;\n}\n\n/** True when `bytes` are JSON laid out exactly as faf writes it (2-space\n * JSON and a final newline), so re-writing it loses nothing: no hand\n * formatting, no repeated key, no number JSON cannot hold exactly. */\nexport function isFafJsonLayout(bytes: Uint8Array): boolean {\n const text = new TextDecoder().decode(bytes);\n try {\n return `${JSON.stringify(JSON.parse(text), null, 2)}\\n` === text;\n } catch {\n return false;\n }\n}\n\nexport function parseTargets(raw?: string): CardTarget[] | undefined {\n if (!raw) {return undefined;}\n const parts = raw.split(',').map((s) => s.trim().toLowerCase()).filter(Boolean);\n const bad = parts.filter((p) => !CARD_TARGETS.includes(p as CardTarget));\n if (bad.length) {\n throw new Error(`unknown card target: ${bad.join(', ')} (use ${CARD_TARGETS.join(',')})`);\n }\n return parts as CardTarget[];\n}\n",
98
98
  "/**\n * .fafm types — INTEROP-aligned with claude-fafm-sdk 1.0.0\n * application/vnd.fafm+yaml v1.1\n */\n\nexport const PRIORITY_ORDER = ['ephemeral', 'standard', 'high', 'critical'] as const;\nexport type Priority = (typeof PRIORITY_ORDER)[number];\n\nexport const PRIORITY_RANK: Record<string, number> = Object.fromEntries(\n PRIORITY_ORDER.map((p, i) => [p, i]),\n);\n\nexport const KNOWLEDGE_TYPES = new Set(['user', 'feedback', 'project', 'reference']);\n\nexport const KNOWN_DOC_KEYS = new Set([\n 'version',\n 'profile',\n 'namepoint',\n 'created',\n 'last_etched',\n 'retention',\n 'index',\n 'memory',\n]);\n\nexport const KNOWN_MEMORY_KEYS = new Set(['facts', 'sessions', 'preferences', 'custom']);\n\nexport const LEGACY_PRIORITY: Record<string, Priority> = {\n low: 'ephemeral',\n medium: 'standard',\n};\n\nexport interface Fact {\n text: string;\n id?: string | null;\n type?: string | null;\n priority: Priority | string;\n tags: string[];\n links: string[];\n timestamp?: string | null;\n source?: string | null;\n /** Unknown fact fields (INTEROP §4) */\n extra: Record<string, unknown>;\n}\n\nexport type Profile = 'voice' | 'knowledge';\n\nexport interface SoulDoc {\n version: string;\n profile: string;\n namepoint: string;\n created: string;\n last_etched: string;\n retention: string;\n index: string[];\n memory: {\n facts: unknown[];\n sessions: unknown[];\n preferences: Record<string, unknown>;\n custom: Record<string, unknown>;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n",
99
99
  "/**\n * Soul — local .fafm model (TS mirror of claude-fafm-sdk 1.0 Soul).\n * INTEROP: load/save fidelity, residual preserve, recall SoT.\n *\n * A soul loaded from a file keeps that file's text. `save` writes only what\n * changed since the load (or the last save) into it — through the YAML\n * Document, so comments, key order, quoting, the `version`, a missing\n * `profile`, a hand-kept `index` and every unknown key stay as they were.\n * Known keys faf does not model in the shape the file has them (a `facts` or\n * `index` written as a mapping, `sessions` as a mapping, …) are kept verbatim;\n * a change that would have to rewrite one is refused, with nothing written.\n */\n\nimport { existsSync } from 'fs';\nimport { dirname, resolve } from 'path';\nimport { isMap as isYamlMap, stringify as stringifyYaml, type Document } from 'yaml';\nimport { SafePathError, readBytesIfPresent, readUtf8, resolveInside, safeWriteFile } from '../core/safe-write.js';\nimport { describeShape, isMapping } from '../core/shape.js';\nimport { applyChange, changeAt, editYaml, parseForEdit, sameJs, seqAt } from '../core/yaml-edit.js';\nimport {\n KNOWN_DOC_KEYS,\n KNOWN_MEMORY_KEYS,\n LEGACY_PRIORITY,\n PRIORITY_RANK,\n type Fact,\n type SoulDoc,\n} from './types.js';\n\nexport function utcNow(): string {\n return new Date().toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n}\n\nfunction isNil(v: unknown): v is null | undefined {\n return v === null || v === undefined;\n}\n\n/** Plain words for a YAML value's shape, for load errors. */\nfunction shapeOf(v: unknown): string {\n if (Array.isArray(v)) {return `a list (${v.length} item${v.length === 1 ? '' : 's'})`;}\n if (isNil(v)) {return 'empty';}\n if (typeof v === 'string') {return `a string (${JSON.stringify(v.length > 40 ? `${v.slice(0, 40)}…` : v)})`;}\n return `a ${typeof v}`;\n}\n\nconst isMap = (v: unknown): v is Record<string, unknown> =>\n typeof v === 'object' && v !== null && !Array.isArray(v);\n\n/** A soul file's real path and text. A soul.fafm link must stay inside its\n * folder and end at a .faf/.fafm file (SafePathError otherwise) — never read\n * ~/.aws/credentials as a soul — and the text must be UTF-8 (a soul that is\n * not is refused, never re-encoded). */\nfunction readSoulText(path: string): { real: string; text: string } {\n const full = resolve(path);\n const real = resolveInside(dirname(full), full, { read: true });\n return { real, text: readUtf8(real) };\n}\n\n/** Write `text` to `path` unless the file already holds exactly these bytes;\n * returns the real path. `loaded` is the file a soul was loaded from and the\n * text read: when this is that file, a text that is still `loaded.text` has\n * nothing new to write (whatever is on disk now stays), and otherwise the\n * file must still hold `loaded.text` — else it changed on disk after the\n * load, and the write is refused (SafePathError `changed`) rather than\n * written over the edit. Any other path — a soul made with no file, or a\n * save to a file the soul was not loaded from — must have no file there,\n * unless `replace` asks to write over it: a file already there is refused\n * with \"<file> already exists — not written; pass { replace: true } (faf\n * memory convert --force) to replace it\" (SafePathError `changed`: it is not\n * the no-file the soul was made for), and one that appears while faf writes\n * with the \"changed on disk\" line. Link rules and the atomic write are\n * safeWriteFile's. */\nfunction writeUnlessSame(path: string, text: string, loaded: { real: string; text: string } | undefined, replace: boolean): string {\n const full = resolve(path);\n const target = resolveInside(dirname(full), full);\n const ownFile = loaded !== undefined && loaded.real === target;\n if (ownFile && loaded.text === text) {return target;}\n let now: Buffer | null | undefined;\n try {\n now = readBytesIfPresent(target);\n } catch {\n now = undefined; // unreadable: the write below says why\n }\n if (now && now.equals(Buffer.from(text, 'utf-8'))) {return target;}\n if (!ownFile && !replace && now) {\n throw new SafePathError(\n 'changed',\n full,\n `${full} already exists — not written; pass { replace: true } (faf memory convert --force) to replace it`,\n { onWrite: true },\n );\n }\n const expect = ownFile ? loaded.text : replace ? now : null;\n return safeWriteFile(path, text, expect === undefined ? {} : { expect });\n}\n\nexport function canonicalPriority(p: string | null | undefined): string {\n if (isNil(p)) {return 'standard';}\n if (LEGACY_PRIORITY[p]) {return LEGACY_PRIORITY[p];}\n if (p in PRIORITY_RANK) {return p;}\n return 'standard';\n}\n\nconst KNOWN_FACT = new Set([\n 'text',\n 'id',\n 'type',\n 'priority',\n 'tags',\n 'links',\n 'timestamp',\n 'source',\n]);\n\nexport function factFromObj(obj: unknown): Fact {\n if (typeof obj === 'string') {\n return {\n text: obj,\n id: null,\n type: null,\n priority: 'standard',\n tags: [],\n links: [],\n timestamp: null,\n source: null,\n extra: {},\n };\n }\n if (!obj || typeof obj !== 'object' || !('text' in obj)) {\n throw new Error(`fact must be a string or a mapping with 'text': ${JSON.stringify(obj)}`);\n }\n const o = obj as Record<string, unknown>;\n const extra: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(o)) {\n if (!KNOWN_FACT.has(k)) {extra[k] = v;}\n }\n return {\n text: String(o.text),\n id: (o.id as string) ?? null,\n type: (o.type as string) ?? null,\n priority: canonicalPriority(o.priority as string | undefined),\n tags: Array.isArray(o.tags) ? (o.tags as string[]).slice() : [],\n links: Array.isArray(o.links) ? (o.links as string[]).slice() : [],\n timestamp: (o.timestamp as string) ?? null,\n source: (o.source as string) ?? null,\n extra,\n };\n}\n\nexport function factToObj(f: Fact): unknown {\n const bare =\n isNil(f.id) &&\n isNil(f.type) &&\n f.tags.length === 0 &&\n f.links.length === 0 &&\n isNil(f.timestamp) &&\n isNil(f.source) &&\n Object.keys(f.extra).length === 0 &&\n f.priority === 'standard';\n if (bare) {return f.text;}\n const out: Record<string, unknown> = { text: f.text };\n if (!isNil(f.id)) {out.id = f.id;}\n if (!isNil(f.type)) {out.type = f.type;}\n out.priority = f.priority;\n if (f.tags.length) {out.tags = f.tags;}\n if (f.links.length) {out.links = f.links;}\n if (!isNil(f.timestamp)) {out.timestamp = f.timestamp;}\n if (!isNil(f.source)) {out.source = f.source;}\n Object.assign(out, f.extra);\n return out;\n}\n\n/** A complete Fact: a bare string, or a partial object (text only, say), is\n * made whole with factFromObj; a complete Fact is kept as it is. */\nfunction asFact(value: unknown): Fact {\n const f = value as Fact;\n const whole = isMap(value) && typeof f.text === 'string' && Array.isArray(f.tags) &&\n Array.isArray(f.links) && isMap(f.extra) && typeof f.priority === 'string';\n return whole ? f : factFromObj(value);\n}\n\n/** A list item that is a fact (a string, or a mapping with `text`), or null. */\nfunction factFromItem(item: unknown): Fact | null {\n if (typeof item === 'string' || (isMap(item) && 'text' in item)) {return factFromObj(item);}\n return null;\n}\n\n/** Filters for {@link Soul.recall}. */\nexport interface RecallOptions {\n tags?: string[];\n type?: string;\n minPriority?: string;\n limit?: number | null;\n}\n\n/** Everything a soul models, as plain values — what the file held at load\n * (or at the last save), compared with the soul's state at save. */\ninterface SoulState {\n top: Record<string, unknown>;\n index: string[];\n sessions: unknown[];\n preferences: Record<string, unknown>;\n custom: Record<string, unknown>;\n extra: Record<string, unknown>;\n memoryExtra: Record<string, unknown>;\n /** Item position in memory.facts → the fact as it was written there. */\n facts: Map<number, unknown>;\n}\n\n/** Where a loaded soul came from. */\ninterface Origin {\n path: string;\n /** The file's real path (links followed), when the text came from disk. */\n real?: string;\n text: string;\n base: SoulState;\n /** Known keys the file has in a shape faf does not model, and that shape\n * (`memory.facts` → 'a mapping'). Kept verbatim. */\n residual: Map<string, string>;\n}\n\nconst TOP_KEYS = ['profile', 'namepoint', 'created', 'last_etched', 'retention'] as const;\n\nexport class Soul {\n namepoint: string;\n profile: string;\n retention: string;\n created: string;\n last_etched: string;\n private _facts: Fact[];\n private _byId: Map<string, number>;\n private _index: string[];\n private _sessions: unknown[];\n private _preferences: Record<string, unknown>;\n private _custom: Record<string, unknown>;\n private _extra: Record<string, unknown>;\n private _memoryExtra: Record<string, unknown>;\n private _version: string | undefined;\n /** The file the soul was loaded from or last saved to. Undefined while the\n * soul was made with no file (in memory, not saved yet): its first save\n * then refuses a file already at the path — one that appeared since the\n * caller found none — unless `replace`. */\n private _origin: Origin | undefined;\n /** Each loaded fact's item position in the file's memory.facts. */\n private _factAt = new WeakMap<Fact, number>();\n /** The index was faf-derived when the soul was loaded (or made, or last\n * saved) — the default save keeps it in step with the facts. */\n private _indexDerived = true;\n /** The index as it was then: an index changed in memory since is the\n * caller's, and the default save leaves it as it is. */\n private _indexAtRecord: string[] = [];\n\n constructor(\n namepoint: string,\n opts: {\n profile?: string;\n facts?: Fact[];\n retention?: string;\n created?: string | null;\n index?: string[];\n sessions?: unknown[];\n preferences?: Record<string, unknown>;\n custom?: Record<string, unknown>;\n extra?: Record<string, unknown>;\n memoryExtra?: Record<string, unknown>;\n } = {},\n ) {\n this.namepoint = namepoint;\n this.profile = opts.profile ?? 'knowledge';\n this.retention = opts.retention ?? 'forever';\n this.created = opts.created ?? utcNow();\n this.last_etched = this.created;\n // Bare strings are facts too: made whole so recall and save see `text`.\n this._facts = opts.facts ? opts.facts.map(asFact) : [];\n this._byId = new Map();\n this._facts.forEach((f, i) => {\n if (!isNil(f.id)) {this._byId.set(f.id, i);}\n });\n this._index = opts.index ? opts.index.slice() : [];\n this._sessions = opts.sessions ? structuredClone(opts.sessions) : [];\n this._preferences = opts.preferences ? { ...opts.preferences } : {};\n this._custom = opts.custom ? { ...opts.custom } : {};\n this._extra = opts.extra ? { ...opts.extra } : {};\n this._memoryExtra = opts.memoryExtra ? { ...opts.memoryExtra } : {};\n // A new soul's index is faf's: none given, or exactly the one faf derives.\n this._indexDerived = opts.index === undefined || sameJs(this._index, this.derivedIndex());\n this._indexAtRecord = this._index.slice();\n }\n\n get facts(): Fact[] {\n return this._facts;\n }\n\n get index(): string[] {\n return this._index;\n }\n\n get sessions(): unknown[] {\n return this._sessions;\n }\n\n get preferences(): Record<string, unknown> {\n return this._preferences;\n }\n\n get custom(): Record<string, unknown> {\n return this._custom;\n }\n\n get extra(): Record<string, unknown> {\n return this._extra;\n }\n\n get memoryExtra(): Record<string, unknown> {\n return this._memoryExtra;\n }\n\n /**\n * Load a soul. The root must be a mapping (anything else is refused). Known\n * keys in a shape faf does not model — `memory.facts` or `index` written as\n * a mapping, `memory.sessions` as a mapping, `memory.preferences` as a list,\n * `memory` itself as a list — load as empty and stay in the file verbatim;\n * so do list items in `memory.facts` that are not facts.\n */\n static load(path: string): Soul {\n if (!existsSync(path)) {\n throw new Error(`soul file not found: ${path}`);\n }\n const { real, text } = readSoulText(path);\n return Soul.fromText(text, path, real);\n }\n\n private static fromText(raw: string, path: string, real?: string): Soul {\n const doc: unknown = parseForEdit(raw, path).toJS();\n // Shape guard: a list or scalar root would be spread into index keys (or\n // dropped) and the next save would write that back. Refuse; change nothing.\n if (!isMap(doc)) {\n throw new Error(`soul is not a YAML mapping: ${path} is ${shapeOf(doc)}`);\n }\n const shape = new ShapeReader();\n const memory = shape.pick('memory', doc.memory, isMapping) ?? {};\n const soul = new Soul(String(doc.namepoint ?? path.replace(/.*\\//, '').replace(/\\.fafm$/, '')), {\n profile: String(doc.profile ?? 'voice'),\n retention: String(doc.retention ?? 'forever'),\n created: (doc.created as string) ?? null,\n ...shape.modelled(doc, memory),\n });\n (shape.pick('memory.facts', memory.facts, Array.isArray) ?? []).forEach((item, i) => {\n const fact = factFromItem(item);\n if (fact) {soul.adopt(fact, i);}\n });\n soul.last_etched = String(doc.last_etched ?? soul.created);\n soul._version = isNil(doc.version) ? undefined : String(doc.version);\n soul._origin = { path, real, text: raw, base: soul.state(), residual: shape.residual };\n soul.recordIndex();\n return soul;\n }\n\n /** Note whether the index is faf-derived now (at load, and after a save). */\n private recordIndex(): void {\n this._indexDerived = this.indexIsDerived();\n this._indexAtRecord = this._index.slice();\n }\n\n /** Take a fact read from item `i` of the file's memory.facts. */\n private adopt(fact: Fact, i: number): void {\n this._facts.push(fact);\n if (!isNil(fact.id)) {this._byId.set(fact.id, this._facts.length - 1);}\n this._factAt.set(fact, i);\n }\n\n static fromFile(path: string): Soul {\n return Soul.load(path);\n }\n\n toDoc(): SoulDoc {\n const memory: SoulDoc['memory'] = {\n facts: this._facts.map(factToObj),\n sessions: structuredClone(this._sessions),\n preferences: structuredClone(this._preferences),\n custom: structuredClone(this._custom),\n };\n for (const [k, v] of Object.entries(this._memoryExtra)) {\n if (!KNOWN_MEMORY_KEYS.has(k)) {memory[k] = structuredClone(v);}\n }\n const doc: SoulDoc = {\n version: this._version ?? '1.1',\n profile: this.profile,\n namepoint: this.namepoint,\n created: this.created,\n last_etched: this.last_etched,\n retention: this.retention,\n index: this._index.slice(),\n memory,\n };\n for (const [k, v] of Object.entries(this._extra)) {\n if (!KNOWN_DOC_KEYS.has(k)) {doc[k] = structuredClone(v);}\n }\n return doc;\n }\n\n toYaml(): string {\n return stringifyYaml(this.toDoc(), { lineWidth: 100 });\n }\n\n /** The index faf derives from the facts (INTEROP §5 formula,\n * `${id ?? '?'} — ${text[:width]}` per fact) — without changing the soul. */\n derivedIndex(width = 80): string[] {\n return this._facts.map((f) => `${f.id ?? '?'} — ${String(f.text).slice(0, width)}`);\n }\n\n /** True when the stored index is exactly the one faf derives from the facts\n * (so faf wrote it, and may rewrite it). A hand-kept index is not. */\n indexIsDerived(width = 80): boolean {\n return !this._origin?.residual.has('index') && sameJs(this._index, this.derivedIndex(width));\n }\n\n rebuildIndex(width = 80): string[] {\n this._index = this.derivedIndex(width);\n // Rebuilt by faf: the default save keeps it in step from here on.\n this._indexDerived = true;\n this._indexAtRecord = this._index.slice();\n return this._index;\n }\n\n /**\n * Write the soul — atomically (a failure leaves the original as it was)\n * and never through a link that leaves the folder or dangles.\n *\n * A soul loaded from a file is written as that file's text with only what\n * changed since the load (or the last save) edited into it; a save that\n * changes nothing writes nothing.\n *\n * The index: `reindex: true` rebuilds it from the facts, `reindex: false`\n * keeps it as it is. Left out, the index is rebuilt only when it was\n * faf-derived — {@link indexIsDerived} when the soul was loaded or last\n * saved; a new soul counts as derived unless it was given an index of its\n * own — and has not been changed in memory since. A hand-kept index is\n * never touched.\n * Refused, with nothing written: a change to a known key the file holds in\n * a shape faf does not model (adding a fact to `memory.facts` written as a\n * mapping, say); a save over the file the soul was loaded from (or last\n * saved to) when that file changed on disk since — SafePathError `changed`,\n * so an edit made meanwhile is never written over; and a save of a soul\n * made with no file (or to a path it was not loaded from) when a file is\n * already there — the same `changed` refusal, so a soul.fafm that appeared\n * after the caller found none is kept. `replace: true` is the explicit\n * overwrite of such a file (`faf memory convert --force`).\n */\n save(path: string, opts: { reindex?: boolean; replace?: boolean } = {}): string {\n const reindex = opts.reindex ?? (this._indexDerived && sameJs(this._index, this._indexAtRecord));\n if (reindex) {this.rebuildIndex();}\n const replace = opts.replace === true;\n const origin = this._origin;\n if (!origin) {\n const text = this.toYaml();\n // Made with no file: nothing may be there now (unless replace).\n const real = writeUnlessSame(path, text, undefined, replace);\n this.settle(path, text, new Map(this._facts.map((f, i) => [f, i])), real);\n return path;\n }\n let positions = new Map<Fact, number>();\n const { text } = editYaml(origin.text, (doc) => {\n positions = this.applyTo(doc, origin, reindex);\n }, path);\n // Refused, with nothing written, if the file changed on disk since the load.\n const real = writeUnlessSame(path, text, origin.real === undefined ? undefined : { real: origin.real, text: origin.text }, replace);\n this.settle(path, text, positions, real);\n return path;\n }\n\n toFile(path: string, opts: { reindex?: boolean; replace?: boolean } = {}): string {\n return this.save(path, opts);\n }\n\n /** After a save: the written text (at `real`) is the new origin. */\n private settle(path: string, text: string, positions: Map<Fact, number>, real: string): void {\n this._factAt = new WeakMap();\n for (const [f, i] of positions) {this._factAt.set(f, i);}\n this._origin = { path, real, text, base: this.state(), residual: this._origin?.residual ?? new Map() };\n this.recordIndex();\n }\n\n /** The soul's modelled state as plain values. */\n private state(): SoulState {\n const facts = new Map<number, unknown>();\n for (const f of this._facts) {\n const at = this._factAt.get(f);\n if (at !== undefined) {facts.set(at, structuredClone(factToObj(f)));}\n }\n return {\n top: Object.fromEntries(TOP_KEYS.map((k) => [k, this[k]])),\n index: this._index.slice(),\n sessions: structuredClone(this._sessions),\n preferences: structuredClone(this._preferences),\n custom: structuredClone(this._custom),\n extra: structuredClone(this._extra),\n memoryExtra: structuredClone(this._memoryExtra),\n facts,\n };\n }\n\n /** Refuse a change that would rewrite a key kept verbatim. */\n private static refuse(origin: Origin, key: string, what: string): never {\n throw new Error(\n `${origin.path}: ${key} is ${origin.residual.get(key)} in the file, not the shape faf writes — ` +\n `faf keeps it as it is and will not ${what}. Nothing written.`,\n );\n }\n\n /** Edit the loaded Document with what changed since `origin.base`; returns\n * each fact's item position in memory.facts afterwards. */\n private applyTo(doc: Document, origin: Origin, reindexed: boolean): Map<Fact, number> {\n const base = origin.base;\n const now = this.state();\n const name = origin.path;\n for (const key of TOP_KEYS) {\n if (base.top[key] !== now.top[key]) {doc.set(key, now.top[key]);}\n }\n if (!sameJs(base.index, now.index)) {\n if (origin.residual.has('index') && !reindexed) {Soul.refuse(origin, 'index', 'replace it');}\n changeAt(doc, ['index'], origin.residual.has('index') ? undefined : base.index, now.index, name);\n }\n for (const key of unionKeys(base.extra, now.extra)) {\n changeAt(doc, [key], base.extra[key], now.extra[key], name);\n }\n this.applyMemory(doc, origin, base, now);\n return this.applyFacts(doc, origin);\n }\n\n private applyMemory(doc: Document, origin: Origin, base: SoulState, now: SoulState): void {\n const parts: Array<[string, unknown, unknown]> = [\n ['sessions', base.sessions, now.sessions],\n ['preferences', base.preferences, now.preferences],\n ['custom', base.custom, now.custom],\n ...unionKeys(base.memoryExtra, now.memoryExtra).map(\n (k): [string, unknown, unknown] => [k, base.memoryExtra[k], now.memoryExtra[k]],\n ),\n ];\n for (const [key, before, after] of parts) {\n if (sameJs(before, after)) {continue;}\n if (origin.residual.has('memory')) {Soul.refuse(origin, 'memory', `change memory.${key}`);}\n if (origin.residual.has(`memory.${key}`)) {Soul.refuse(origin, `memory.${key}`, 'replace it');}\n changeAt(doc, ['memory', key], before, after, origin.path);\n }\n }\n\n /** Which facts are still at their place in the file, and which are new.\n * Kept facts must be in the file's order, new ones after them. */\n private sortFacts(origin: Origin): { kept: Array<[Fact, number]>; added: Fact[] } {\n const kept: Array<[Fact, number]> = [];\n const added: Fact[] = [];\n for (const f of this._facts) {\n const at = this._factAt.get(f);\n if (at === undefined) {\n added.push(f);\n continue;\n }\n if (added.length > 0 || (kept.length > 0 && at <= kept[kept.length - 1][1])) {\n throw new Error(`${origin.path}: the facts were reordered — faf keeps the order soul.fafm has. Nothing written.`);\n }\n kept.push([f, at]);\n }\n return { kept, added };\n }\n\n /** Facts: changed facts are edited where they are (only the fields that\n * changed), deleted ones removed, new ones appended. List items that are\n * not facts are never touched. */\n private applyFacts(doc: Document, origin: Origin): Map<Fact, number> {\n const { kept, added } = this.sortFacts(origin);\n const keptAt = new Set(kept.map(([, at]) => at));\n const gone = [...origin.base.facts.keys()].filter((at) => !keptAt.has(at)).sort((a, b) => b - a);\n const changed = kept.filter(([f, at]) => !sameJs(origin.base.facts.get(at), factToObj(f)));\n const positions = new Map<Fact, number>(kept);\n if (added.length === 0 && gone.length === 0 && changed.length === 0) {return positions;}\n for (const key of ['memory', 'memory.facts']) {\n if (origin.residual.has(key)) {Soul.refuse(origin, key, 'add facts to it');}\n }\n const seq = seqAt(doc, ['memory', 'facts'], origin.path);\n for (const [f, at] of changed) {\n seq.items[at] = editFact(doc, seq.items[at], origin.base.facts.get(at), factToObj(f));\n }\n for (const at of gone) {seq.items.splice(at, 1);}\n for (const [f, at] of kept) {positions.set(f, at - gone.filter((g) => g < at).length);}\n for (const f of added) {\n positions.set(f, seq.items.length);\n seq.items.push(doc.createNode(factToObj(f)));\n }\n return positions;\n }\n\n /** Insert or overwrite a Fact by id, preserving every field it carries (its\n * timestamp included) — the INTEROP merge primitive: on an existing id the\n * whole Fact is replaced. `etch` merges instead. */\n add(fact: Fact): Fact {\n const whole = asFact(fact);\n if (!isNil(whole.id) && this._byId.has(whole.id)) {\n const idx = this._byId.get(whole.id);\n if (idx !== undefined) {\n const at = this._factAt.get(this._facts[idx]);\n this._facts[idx] = whole;\n if (at !== undefined) {this._factAt.set(whole, at);}\n }\n } else {\n this._facts.push(whole);\n if (!isNil(whole.id)) {this._byId.set(whole.id, this._facts.length - 1);}\n }\n if (whole.timestamp && whole.timestamp > (this.last_etched || '')) {\n this.last_etched = whole.timestamp;\n }\n return whole;\n }\n\n /**\n * Write a fact. With an `id` that is already in the soul, the fact is\n * updated in place: the text and timestamp are new, and of the other fields\n * only those passed here change — links, source, tags, type, priority and\n * any extra fields the fact carries are kept (a priority is never lowered\n * unless one is passed). Otherwise the fact is appended.\n */\n etch(\n text: string,\n opts: {\n id?: string;\n type?: string;\n priority?: string;\n tags?: string[];\n links?: string[];\n source?: string;\n } = {},\n ): Fact {\n const existing = isNil(opts.id) ? null : this.getFact(opts.id);\n if (existing) {return this.add(mergeFact(existing, text, opts));}\n return this.add({\n text,\n id: opts.id ?? null,\n type: opts.type ?? null,\n priority: canonicalPriority(opts.priority),\n tags: opts.tags ? opts.tags.slice() : [],\n links: opts.links ? opts.links.slice() : [],\n timestamp: utcNow(),\n source: opts.source ?? null,\n extra: {},\n });\n }\n\n /**\n * Deterministic recall (INTEROP §6). Call it as `recall(query, filters)` or\n * `recall({ query, ...filters })`. Bare-string facts are facts: their text\n * is matched and returned like any other.\n */\n recall(\n query?: string | null | (RecallOptions & { query?: string | null }),\n opts: RecallOptions = {},\n ): Fact[] {\n const filters: RecallOptions = isMap(query) ? { ...query, ...opts } : opts;\n const text = isMap(query) ? query.query : query;\n const floor = PRIORITY_RANK[canonicalPriority(filters.minPriority ?? 'ephemeral')] ?? 0;\n const q = typeof text === 'string' ? text.toLowerCase() : '';\n const wantTags = new Set(filters.tags ?? []);\n const indexed: Array<[number, Fact]> = [];\n this._facts.forEach((f, i) => {\n if (q && !String(f.text ?? '').toLowerCase().includes(q)) {return;}\n if (wantTags.size > 0 && ![...wantTags].some((t) => (f.tags ?? []).includes(t))) {return;}\n if (!isNil(filters.type) && f.type !== filters.type) {return;}\n if ((PRIORITY_RANK[f.priority] ?? 1) < floor) {return;}\n indexed.push([i, f]);\n });\n indexed.sort((a, b) => {\n const pa = PRIORITY_RANK[a[1].priority] ?? 1;\n const pb = PRIORITY_RANK[b[1].priority] ?? 1;\n if (pb !== pa) {return pb - pa;}\n const ta = a[1].timestamp ?? '';\n const tb = b[1].timestamp ?? '';\n if (tb !== ta) {return tb < ta ? -1 : tb > ta ? 1 : 0;}\n return b[0] - a[0]; // insertion index desc\n });\n const results = indexed.map(([, f]) => f);\n if (!isNil(filters.limit)) {return results.slice(0, filters.limit);}\n return results;\n }\n\n getFact(id: string): Fact | null {\n const i = this._byId.get(id);\n return i === undefined ? null : this._facts[i];\n }\n\n deleteFact(id: string): boolean {\n const i = this._byId.get(id);\n if (i === undefined) {return false;}\n this._facts.splice(i, 1);\n this._byId.clear();\n this._facts.forEach((f, j) => {\n if (!isNil(f.id)) {this._byId.set(f.id, j);}\n });\n return true;\n }\n}\n\n/** `existing` with a new text and timestamp, and only the fields passed in\n * `opts` replaced; a priority is never lowered unless one is passed. */\nfunction mergeFact(\n existing: Fact,\n text: string,\n opts: { type?: string; priority?: string; tags?: string[]; links?: string[]; source?: string },\n): Fact {\n const or = <T>(passed: T | undefined, kept: T): T => (isNil(passed) ? kept : passed);\n return {\n ...existing,\n text,\n type: or(opts.type, existing.type),\n priority: isNil(opts.priority) ? existing.priority : canonicalPriority(opts.priority),\n tags: or(opts.tags, existing.tags).slice(),\n links: or(opts.links, existing.links).slice(),\n source: or(opts.source, existing.source),\n timestamp: utcNow(),\n extra: { ...existing.extra },\n };\n}\n\n/** Reads known keys, keeping those in a shape faf does not model as residual. */\nclass ShapeReader {\n readonly residual = new Map<string, string>();\n\n /** `value` when it fits; undefined (and noted as residual) when it does not. */\n pick<T>(key: string, value: unknown, fits: (v: unknown) => v is T): T | undefined {\n if (isNil(value)) {return undefined;}\n if (fits(value)) {return value;}\n this.residual.set(key, describeShape(value));\n return undefined;\n }\n\n /** The Soul constructor options for the index, memory subtrees and unknown keys. */\n modelled(doc: Record<string, unknown>, memory: Record<string, unknown>): {\n index: string[];\n sessions: unknown[];\n preferences: Record<string, unknown>;\n custom: Record<string, unknown>;\n extra: Record<string, unknown>;\n memoryExtra: Record<string, unknown>;\n } {\n return {\n index: (this.pick('index', doc.index, Array.isArray) ?? []).map(String),\n sessions: this.pick('memory.sessions', memory.sessions, Array.isArray) ?? [],\n preferences: structuredClone(this.pick('memory.preferences', memory.preferences, isMapping) ?? {}),\n custom: structuredClone(this.pick('memory.custom', memory.custom, isMapping) ?? {}),\n extra: residualKeys(doc, KNOWN_DOC_KEYS),\n memoryExtra: residualKeys(memory, KNOWN_MEMORY_KEYS),\n };\n }\n}\n\n/** Keys of `obj` outside `known`, deep-copied — the residual a soul carries. */\nfunction residualKeys(obj: Record<string, unknown>, known: ReadonlySet<string>): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (!known.has(k)) {out[k] = structuredClone(v);}\n }\n return out;\n}\n\nfunction unionKeys(a: Record<string, unknown>, b: Record<string, unknown>): string[] {\n return [...new Set([...Object.keys(a), ...Object.keys(b)])];\n}\n\n/** Edit one fact item where it is: only the fields that changed. A bare-string\n * item that gains fields becomes a mapping; a mapping item stays one. */\nfunction editFact(doc: Document, node: unknown, before: unknown, after: unknown): unknown {\n if (!isYamlMap(node)) {return applyChange(doc, node, before, after);}\n const asMap = (v: unknown): unknown => (typeof v === 'string' ? { text: v } : v);\n return applyChange(doc, node, asMap(before), asMap(after));\n}\n",
100
100
  "/**\n * fromClaudeDir — Claude Code memory store → knowledge Soul.\n * Cite: claude-fafm-sdk 1.0 / fafm-engine serialize_memory approach.\n * Not the proof convert_md_to_fafm (entries/v1.0 anti-pattern).\n */\n\nimport { readdirSync, readFileSync, statSync, existsSync } from 'fs';\nimport { join, basename, resolve } from 'path';\nimport { parse as parseYaml } from 'yaml';\nimport { Soul, utcNow } from './soul.js';\nimport { KNOWLEDGE_TYPES, type Fact } from './types.js';\n\nexport const DEFAULT_SKIP = new Set(['MEMORY.md', 'MEMORY-FULL.md', 'README.md']);\n\nconst LINK_RE = /\\[\\[([^\\]]+)\\]\\]/g;\n\nfunction isoMtime(path: string): string {\n const ms = statSync(path).mtimeMs;\n return new Date(ms).toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n}\n\nfunction parseFrontmatter(text: string): { fm: Record<string, unknown> | null; body: string } {\n if (!text.startsWith('---')) {return { fm: null, body: text };}\n const parts = text.split('---');\n if (parts.length < 3) {return { fm: null, body: text };}\n try {\n const fm = parseYaml(parts[1]);\n if (!fm || typeof fm !== 'object') {return { fm: null, body: parts.slice(2).join('---').trim() };}\n return { fm: fm as Record<string, unknown>, body: parts.slice(2).join('---').trim() };\n } catch {\n return { fm: null, body: text };\n }\n}\n\nfunction factFromTopic(path: string, body: string, fm: Record<string, unknown>): Fact | null {\n if (!fm.name) {return null;}\n const meta =\n fm.metadata && typeof fm.metadata === 'object'\n ? (fm.metadata as Record<string, unknown>)\n : {};\n const mtype = meta.type;\n if (typeof mtype !== 'string' || !KNOWLEDGE_TYPES.has(mtype)) {return null;}\n\n const name = String(fm.name).trim();\n const description =\n fm.description !== undefined && fm.description !== null && String(fm.description).trim()\n ? String(fm.description).trim()\n : '';\n const text = description || name;\n\n const extra: Record<string, unknown> = {};\n if (meta.originSessionId) {\n extra.provenance = [`session:${meta.originSessionId}`];\n }\n\n const links = [...new Set([...body.matchAll(LINK_RE)].map((m) => m[1]))].sort();\n\n return {\n text,\n id: name,\n type: mtype,\n priority: 'standard',\n tags: [],\n links,\n timestamp: isoMtime(path),\n source: `claude-code memory: ${basename(path)}`,\n extra,\n };\n}\n\n/**\n * Convert a Claude Code memory directory into a knowledge Soul.\n */\nexport function fromClaudeDir(\n path: string,\n opts: { namepoint?: string; skip?: Set<string> } = {},\n): Soul {\n const root = resolve(path);\n if (!existsSync(root)) {\n throw new Error(`Claude memory directory not found: ${root}`);\n }\n if (!statSync(root).isDirectory()) {\n throw new Error(`Claude memory path is not a directory: ${root}`);\n }\n\n const skip = opts.skip ?? DEFAULT_SKIP;\n const namepoint = opts.namepoint ?? `@claude-code:${basename(root)}`;\n\n const facts: Fact[] = [];\n const files = readdirSync(root)\n .filter((f) => f.endsWith('.md'))\n .sort();\n\n for (const file of files) {\n if (skip.has(file)) {continue;}\n const full = join(root, file);\n let text: string;\n try {\n text = readFileSync(full, 'utf-8');\n } catch {\n continue;\n }\n const { fm, body } = parseFrontmatter(text);\n if (!fm) {continue;}\n const fact = factFromTopic(full, body, fm);\n if (fact) {facts.push(fact);}\n }\n\n const stamps = facts.map((f) => f.timestamp).filter(Boolean) as string[];\n const created = stamps.length ? stamps.reduce((a, b) => (a < b ? a : b)) : utcNow();\n const last = stamps.length ? stamps.reduce((a, b) => (a > b ? a : b)) : created;\n\n const soul = new Soul(namepoint, {\n profile: 'knowledge',\n facts,\n created,\n });\n soul.last_etched = last;\n soul.rebuildIndex();\n return soul;\n}\n",
@@ -110,7 +110,7 @@
110
110
  "import { join } from 'path';\nimport { readRepoDir, readRepoFile, repoExists, statRepoFile } from '../core/safe-write.js';\nimport spec from './ruby-detection.json';\n\n/**\n * Ruby detection — CONTENT-AWARE Gemfile / gemspec classification.\n *\n * Kill line: Gemfile alone ≠ Rails.\n * Bundler backs libraries, Rails apps, Sinatra/Roda/Grape/Hanami, CLIs, and MCP\n * servers. We read gem names (+ light layout), then branch.\n *\n * Same composition as go.ts / jvm.ts: knowledge in ruby-detection.json.\n */\n\nexport type RubyAppType = 'mcp' | 'backend' | 'cli' | 'library';\n\nexport interface RubyProject {\n appType: RubyAppType;\n /** Primary framework label (Rails / Sinatra / …) or ''. */\n framework: string;\n /** package manager signal */\n packageManager: 'bundler' | 'rubygems';\n /** Glass Hood rationale for .faf `# found:`. */\n found: string;\n}\n\nconst MCP_GEMS = (spec.mcpGems as string[]).map(g => g.toLowerCase());\nconst WEB_GEMS = (spec.webGems as Array<[string, string]>).map(\n ([g, label]) => [g.toLowerCase(), label] as [string, string],\n);\nconst CLI_GEMS = (spec.cliGems as Array<[string, string]>).map(\n ([g, label]) => [g.toLowerCase(), label] as [string, string],\n);\nconst RAILS_LAYOUT = spec.railsLayoutFiles as string[];\n\n/** True if directory looks like a Ruby project root. */\nexport function isRubyRoot(dir: string): boolean {\n return (\n repoExists(dir, 'Gemfile') ||\n repoExists(dir, 'gems.rb') ||\n hasGemspec(dir)\n );\n}\n\nfunction hasGemspec(dir: string): boolean {\n return (readRepoDir(dir) ?? []).some(e => e.name.endsWith('.gemspec'));\n}\n\n/**\n * Extract gem names from a Gemfile / gems.rb (static — does NOT execute Ruby).\n * Handles: gem 'x', gem \"x\", gem :x (rare), gem \"x\", \"1.0\"\n */\nexport function parseGemfileGems(content: string): Set<string> {\n const gems = new Set<string>();\n for (const raw of content.split('\\n')) {\n // Strip comments\n const line = raw.replace(/#.*$/, '').trim();\n if (!line) {continue;}\n // gem 'name' or gem \"name\" optionally followed by comma/version\n const m = line.match(/^\\s*gem\\s+['\"]([^'\"]+)['\"]/i)\n || line.match(/^\\s*gem\\s+:([A-Za-z0-9_.-]+)/i);\n if (m) {gems.add(m[1].toLowerCase());}\n }\n return gems;\n}\n\n/**\n * Extract gem names from Gemfile.lock SPECS sections (static).\n * Lines like \" rails (7.1.0)\" under GEM specs.\n */\nexport function parseGemfileLockGems(content: string): Set<string> {\n const gems = new Set<string>();\n let inSpecs = false;\n for (const raw of content.split('\\n')) {\n const line = raw.replace(/\\r$/, '');\n if (/^\\s*specs:\\s*$/.test(line)) {\n inSpecs = true;\n continue;\n }\n // Leave specs on blank line at column 0 or new top-level section (no indent)\n if (inSpecs) {\n if (/^[A-Z]/.test(line) || line.startsWith('PLATFORMS') || line.startsWith('DEPENDENCIES')\n || line.startsWith('BUNDLED') || line.startsWith('RUBY VERSION') || line.startsWith('CHECKSUMS')) {\n inSpecs = false;\n continue;\n }\n // \" gemname (1.2.3)\" — 4 spaces typical\n const m = line.match(/^\\s{2,}([a-zA-Z0-9_.-]+)\\s*\\(/);\n if (m) {gems.add(m[1].toLowerCase());}\n }\n }\n return gems;\n}\n\n/** Gem names from *.gemspec dependency lines (static). */\nexport function parseGemspecGems(content: string): Set<string> {\n const gems = new Set<string>();\n for (const raw of content.split('\\n')) {\n const line = raw.replace(/#.*$/, '');\n // add_dependency \"x\" / add_runtime_dependency 'x' / add_development_dependency\n const m = line.match(/add_(?:runtime_|development_)?dependency\\s*\\(?\\s*['\"]([^'\"]+)['\"]/i);\n if (m) {gems.add(m[1].toLowerCase());}\n }\n return gems;\n}\n\nfunction collectGems(dir: string): { gems: Set<string>; sources: string[] } {\n const gems = new Set<string>();\n const sources: string[] = [];\n\n for (const name of ['Gemfile', 'gems.rb']) {\n const body = readRepoFile(dir, name);\n if (body) {\n for (const g of parseGemfileGems(body)) {gems.add(g);}\n sources.push(name);\n }\n }\n\n const lock = readRepoFile(dir, 'Gemfile.lock') || readRepoFile(dir, 'gems.locked');\n if (lock) {\n for (const g of parseGemfileLockGems(lock)) {gems.add(g);}\n sources.push('Gemfile.lock');\n }\n\n for (const { name: f } of readRepoDir(dir) ?? []) {\n if (!f.endsWith('.gemspec')) {continue;}\n const body = readRepoFile(dir, f);\n if (body) {\n for (const g of parseGemspecGems(body)) {gems.add(g);}\n sources.push(f);\n }\n }\n\n return { gems, sources };\n}\n\nfunction hasGem(gems: Set<string>, name: string): boolean {\n const n = name.toLowerCase();\n if (gems.has(n)) {return true;}\n // rails engines sometimes appear as path gems still named rails\n return false;\n}\n\nfunction findLabeled(\n gems: Set<string>,\n entries: Array<[string, string]>,\n): [string, string] | undefined {\n let best: [string, string] | undefined;\n for (const [id, label] of entries) {\n if (!hasGem(gems, id)) {continue;}\n // Prefer longer / more specific gem names\n if (!best || id.length > best[0].length) {best = [id, label];}\n }\n return best;\n}\n\nfunction findMcp(gems: Set<string>): string | undefined {\n let best: string | undefined;\n for (const id of MCP_GEMS) {\n if (hasGem(gems, id) && (!best || id.length > best.length)) {best = id;}\n }\n return best;\n}\n\nfunction railsLayoutHit(dir: string): string | undefined {\n for (const rel of RAILS_LAYOUT) {\n if (repoExists(dir, rel)) {return rel;}\n }\n return undefined;\n}\n\n/** True if gemspec or package marks executables / bin tools. */\nfunction hasCliShape(dir: string, gems: Set<string>): { hit: boolean; why: string } {\n const cli = findLabeled(gems, CLI_GEMS);\n if (cli) {return { hit: true, why: cli[0] };}\n\n for (const { name: f } of readRepoDir(dir) ?? []) {\n if (!f.endsWith('.gemspec')) {continue;}\n const body = readRepoFile(dir, f);\n if (body && /executables\\s*=/.test(body) && !/executables\\s*=\\s*\\[\\s*\\]/.test(body)) {\n return { hit: true, why: `${f} executables` };\n }\n }\n\n const binEntries = readRepoDir(dir, 'bin');\n if (binEntries) {\n const bins = binEntries.map(e => e.name).filter(b => {\n if (b === 'setup' || b === 'console' || b === 'rake') {return false;}\n return statRepoFile(dir, join('bin', b))?.isFile() === true;\n });\n // bin/rails alone is Rails, not CLI product\n const nonRails = bins.filter(b => b !== 'rails');\n if (nonRails.length > 0 && !hasGem(gems, 'rails') && !railsLayoutHit(dir)) {\n return { hit: true, why: `bin/${nonRails[0]}` };\n }\n }\n\n return { hit: false, why: '' };\n}\n\n/**\n * Classify a Ruby project from Gemfile / lock / gemspec (+ light layout).\n * Returns null if not a Ruby root.\n */\nexport function detectRubyProject(dir: string): RubyProject | null {\n if (!isRubyRoot(dir)) {return null;}\n\n const { gems, sources } = collectGems(dir);\n const srcLabel = sources[0] || 'Gemfile';\n const packageManager: 'bundler' | 'rubygems' =\n sources.some(s => s === 'Gemfile' || s === 'gems.rb' || s.includes('lock'))\n ? 'bundler'\n : 'rubygems';\n\n const mcp = findMcp(gems);\n const web = findLabeled(gems, WEB_GEMS);\n const railsLayout = railsLayoutHit(dir);\n const hasRailsGem = hasGem(gems, 'rails') || hasGem(gems, 'railties');\n const cliShape = hasCliShape(dir, gems);\n const hasConfigRu = repoExists(dir, 'config.ru');\n\n // Rails is NEVER inferred from Gemfile existence alone.\n // rails gem and/or classic layout required.\n const isRails = hasRailsGem || !!railsLayout;\n\n // Strong web gems (not bare rack without config.ru)\n const strongWeb =\n web &&\n web[1] !== 'Rails' &&\n !(web[0] === 'rack' && !hasConfigRu)\n ? web\n : undefined;\n\n let appType: RubyAppType;\n let framework = '';\n let found: string;\n\n // Priority: MCP → Rails → other web → CLI → library\n // Gemfile alone is never backend.\n if (mcp) {\n appType = 'mcp';\n framework = 'MCP';\n found = `${srcLabel} + gem ${mcp} (Ruby MCP)`;\n } else if (isRails) {\n appType = 'backend';\n framework = 'Rails';\n if (hasRailsGem && railsLayout) {\n found = `${srcLabel} + rails + ${railsLayout} (Rails)`;\n } else if (hasRailsGem) {\n found = `${srcLabel} + gem rails (Rails)`;\n } else {\n found = `${railsLayout} (Rails layout)`;\n }\n } else if (strongWeb) {\n appType = 'backend';\n framework = strongWeb[1];\n found = `${srcLabel} + gem ${strongWeb[0]} (Ruby backend)`;\n } else if (cliShape.hit) {\n appType = 'cli';\n framework = findLabeled(gems, CLI_GEMS)?.[1] || '';\n found = `${srcLabel} + ${cliShape.why} (Ruby CLI)`;\n } else {\n appType = 'library';\n found = `${srcLabel} (Ruby library)`;\n }\n\n return { appType, framework, packageManager, found };\n}\n",
111
111
  "import { join } from 'path';\nimport { readRepoDir, readRepoFile, repoExists, statRepoFile } from '../core/safe-write.js';\nimport spec from './swift-detection.json';\n\n/**\n * Swift detection — CONTENT-AWARE Package.swift / Xcode classification.\n *\n * Kill line: Package.swift alone ≠ app.\n * SPM backs libraries, executables (CLI), server apps (Vapor / Hummingbird),\n * MCP servers (official swift-sdk product MCP), and Xcode client apps.\n * Static token scan only — never execute Package.swift / swift build.\n *\n * Same composition as go.ts / ruby.ts: knowledge in swift-detection.json.\n */\n\nexport type SwiftAppType = 'mcp' | 'backend' | 'cli' | 'app' | 'library';\n\nexport interface SwiftProject {\n appType: SwiftAppType;\n /** Primary framework label (Vapor / Hummingbird / MCP / ArgumentParser / …) or ''. */\n framework: string;\n /** spm when Package.swift; xcode when only xcodeproj; both when combined. */\n packageManager: 'spm' | 'xcode' | 'spm+xcode';\n /** Glass Hood rationale for .faf `# found:`. */\n found: string;\n}\n\nconst MCP_URLS = (spec.mcpPackageUrls as string[]).map(u => u.toLowerCase());\nconst MCP_PRODUCTS = (spec.mcpProducts as string[]).map(p => p.toLowerCase());\nconst SERVER_URLS = (spec.serverPackageUrls as Array<[string, string]>).map(\n ([u, label]) => [u.toLowerCase(), label] as [string, string],\n);\nconst SERVER_PRODUCTS = (spec.serverProducts as Array<[string, string]>).map(\n ([p, label]) => [p.toLowerCase(), label] as [string, string],\n);\nconst CLI_URLS = (spec.cliPackageUrls as Array<[string, string]>).map(\n ([u, label]) => [u.toLowerCase(), label] as [string, string],\n);\nconst CLI_PRODUCTS = (spec.cliProducts as Array<[string, string]>).map(\n ([p, label]) => [p.toLowerCase(), label] as [string, string],\n);\nconst APP_PRODUCT_TYPES = spec.appProductTypes as string[];\nconst CLI_PRODUCT_TYPES = spec.cliProductTypes as string[];\nconst VAPOR_LAYOUT = spec.vaporLayoutFiles as string[];\n\nexport interface PackageSwiftSignals {\n packageUrls: string[];\n productNames: string[]; // .product(name: \"X\")\n hasLibraryProduct: boolean;\n hasExecutableProduct: boolean;\n hasPluginProduct: boolean;\n hasExecutableTarget: boolean;\n hasLibraryTarget: boolean;\n}\n\n/** True if directory looks like a Swift project root. */\nexport function isSwiftRoot(dir: string): boolean {\n return repoExists(dir, 'Package.swift') || listXcodeprojs(dir).length > 0;\n}\n\n/** Root-level *.xcodeproj directory names. */\nexport function listXcodeprojs(dir: string): string[] {\n return (readRepoDir(dir) ?? [])\n .map(e => e.name)\n .filter(f => f.endsWith('.xcodeproj') && statRepoFile(dir, f)?.isDirectory() === true);\n}\n\n/**\n * Static scan of Package.swift — does NOT compile or evaluate Swift.\n * Strips line and block comments best-effort before token extraction.\n */\nexport function parsePackageSwift(content: string): PackageSwiftSignals {\n const stripped = stripSwiftComments(content);\n const lower = stripped.toLowerCase();\n\n const packageUrls: string[] = [];\n // .package(url: \"…\") or .package(url: \"…\", from: …)\n const urlRe = /\\.package\\s*\\(\\s*url\\s*:\\s*\"([^\"]+)\"/gi;\n let m: RegExpExecArray | null;\n while ((m = urlRe.exec(stripped)) !== null) {\n packageUrls.push(m[1]);\n }\n // Alternate: .package(url: \"…\") with single quotes (rare)\n const urlRe2 = /\\.package\\s*\\(\\s*url\\s*:\\s*'([^']+)'/gi;\n while ((m = urlRe2.exec(stripped)) !== null) {\n packageUrls.push(m[1]);\n }\n\n const productNames: string[] = [];\n // .product(name: \"Vapor\", package: \"vapor\")\n const prodRe = /\\.product\\s*\\(\\s*name\\s*:\\s*\"([^\"]+)\"/gi;\n while ((m = prodRe.exec(stripped)) !== null) {\n productNames.push(m[1]);\n }\n const prodRe2 = /\\.product\\s*\\(\\s*name\\s*:\\s*'([^']+)'/gi;\n while ((m = prodRe2.exec(stripped)) !== null) {\n productNames.push(m[1]);\n }\n\n // Product kinds in products: [ … ]\n // .library(name: …) .executable(name: …) .plugin(\n const hasLibraryProduct = /\\.library\\s*\\(/.test(lower);\n const hasExecutableProduct = /\\.executable\\s*\\(/.test(lower);\n // Avoid matching .plugin( on targets if we can — products use Product.plugin / .plugin(\n // Both product and target use .plugin( — still a useful signal when no library/exe.\n const hasPluginProduct = /\\.plugin\\s*\\(/.test(lower) && !hasLibraryProduct && !hasExecutableProduct\n ? true\n : /\\bproducts\\s*:\\s*\\[[\\s\\S]*?\\.plugin\\s*\\(/.test(lower);\n\n const hasExecutableTarget = /\\.executabletarget\\s*\\(/.test(lower);\n // Plain .target( — executableTarget/testTarget use different selectors\n const hasLibraryTarget = /\\.target\\s*\\(/.test(lower) && !hasExecutableTarget\n ? true\n : (lower.match(/\\.target\\s*\\(/g) || []).length >\n (lower.match(/\\.executabletarget\\s*\\(/g) || []).length +\n (lower.match(/\\.testtarget\\s*\\(/g) || []).length;\n return {\n packageUrls,\n productNames,\n hasLibraryProduct,\n hasExecutableProduct,\n hasPluginProduct: !!hasPluginProduct,\n hasExecutableTarget,\n hasLibraryTarget,\n };\n}\n\n/** Best-effort strip of line (//) and block comments for static scan. */\nexport function stripSwiftComments(src: string): string {\n let out = '';\n let i = 0;\n while (i < src.length) {\n // string literal — preserve contents so URLs inside stay intact\n if (src[i] === '\"' || src[i] === \"'\") {\n const q = src[i];\n out += q;\n i++;\n while (i < src.length) {\n if (src[i] === '\\\\' && i + 1 < src.length) {\n out += src[i] + src[i + 1];\n i += 2;\n continue;\n }\n out += src[i];\n if (src[i] === q) {\n i++;\n break;\n }\n i++;\n }\n continue;\n }\n if (src[i] === '/' && src[i + 1] === '/') {\n i += 2;\n while (i < src.length && src[i] !== '\\n') {i++;}\n continue;\n }\n if (src[i] === '/' && src[i + 1] === '*') {\n i += 2;\n while (i < src.length && !(src[i] === '*' && src[i + 1] === '/')) {i++;}\n i += 2;\n continue;\n }\n out += src[i];\n i++;\n }\n return out;\n}\n\nfunction urlHits(urls: string[], needles: string[]): string | undefined {\n const lowerUrls = urls.map(u => u.toLowerCase());\n let best: string | undefined;\n for (const n of needles) {\n for (const u of lowerUrls) {\n if (u.includes(n) && (!best || n.length > best.length)) {best = n;}\n }\n }\n return best;\n}\n\nfunction urlHitsLabeled(\n urls: string[],\n entries: Array<[string, string]>,\n): [string, string] | undefined {\n const lowerUrls = urls.map(u => u.toLowerCase());\n let best: [string, string] | undefined;\n for (const [needle, label] of entries) {\n for (const u of lowerUrls) {\n if (u.includes(needle) && (!best || needle.length > best[0].length)) {\n best = [needle, label];\n }\n }\n }\n return best;\n}\n\nfunction productHitsLabeled(\n products: string[],\n entries: Array<[string, string]>,\n): [string, string] | undefined {\n const lower = products.map(p => p.toLowerCase());\n let best: [string, string] | undefined;\n for (const [name, label] of entries) {\n if (lower.includes(name) && (!best || name.length > best[0].length)) {\n best = [name, label];\n }\n }\n return best;\n}\n\nfunction mcpProductHit(products: string[]): boolean {\n const lower = products.map(p => p.toLowerCase());\n return MCP_PRODUCTS.some(p => lower.includes(p));\n}\n\n/**\n * Light pbxproj grep — no AST. Reads project.pbxproj under each .xcodeproj.\n */\nexport function scanXcodeProductTypes(dir: string): {\n hasApplication: boolean;\n hasTool: boolean;\n hit?: string;\n} {\n let hasApplication = false;\n let hasTool = false;\n let hit: string | undefined;\n for (const xp of listXcodeprojs(dir)) {\n const body = readRepoFile(dir, join(xp, 'project.pbxproj'));\n if (!body) {continue;}\n for (const t of APP_PRODUCT_TYPES) {\n if (body.includes(t)) {\n hasApplication = true;\n hit = t;\n }\n }\n for (const t of CLI_PRODUCT_TYPES) {\n if (body.includes(t)) {\n hasTool = true;\n if (!hit) {hit = t;}\n }\n }\n }\n return { hasApplication, hasTool, hit };\n}\n\nfunction vaporLayoutHit(dir: string): string | undefined {\n for (const rel of VAPOR_LAYOUT) {\n if (repoExists(dir, rel)) {return rel;}\n }\n return undefined;\n}\n\n/**\n * Classify a Swift project from Package.swift (+ light Xcode).\n * Returns null if not a Swift root.\n */\nexport function detectSwiftProject(dir: string): SwiftProject | null {\n if (!isSwiftRoot(dir)) {return null;}\n\n const hasPkg = repoExists(dir, 'Package.swift');\n const xcodeprojs = listXcodeprojs(dir);\n const hasXcode = xcodeprojs.length > 0;\n\n let signals: PackageSwiftSignals | null = null;\n if (hasPkg) {\n const body = readRepoFile(dir, 'Package.swift');\n if (body) {signals = parsePackageSwift(body);}\n }\n\n const xcode = hasXcode ? scanXcodeProductTypes(dir) : { hasApplication: false, hasTool: false };\n const layout = vaporLayoutHit(dir);\n\n const urls = signals?.packageUrls ?? [];\n const products = signals?.productNames ?? [];\n\n const mcpUrl = urlHits(urls, MCP_URLS);\n const mcpProd = mcpProductHit(products);\n const serverUrl = urlHitsLabeled(urls, SERVER_URLS);\n const serverProd = productHitsLabeled(products, SERVER_PRODUCTS);\n const cliUrl = urlHitsLabeled(urls, CLI_URLS);\n const cliProd = productHitsLabeled(products, CLI_PRODUCTS);\n\n const isMcp = !!(mcpUrl || mcpProd);\n const isServer = !!(serverUrl || serverProd || layout);\n const isExecutable =\n !!(signals?.hasExecutableProduct || signals?.hasExecutableTarget);\n const isCliStack = !!(cliUrl || cliProd);\n const isApp = xcode.hasApplication;\n\n const packageManager: SwiftProject['packageManager'] =\n hasPkg && hasXcode ? 'spm+xcode' : hasPkg ? 'spm' : 'xcode';\n\n let appType: SwiftAppType;\n let framework = '';\n let found: string;\n\n // Priority: mcp > backend > app > cli > library\n if (isMcp) {\n appType = 'mcp';\n framework = 'MCP';\n if (mcpProd) {\n found = 'Package.swift + product MCP (Swift MCP)';\n } else {\n found = `Package.swift + ${mcpUrl} (Swift MCP)`;\n }\n } else if (isServer) {\n appType = 'backend';\n framework = serverProd?.[1] || serverUrl?.[1] || (layout ? 'Vapor' : '');\n if (serverProd) {\n found = `Package.swift + product ${serverProd[1]} (Swift backend)`;\n } else if (serverUrl) {\n found = `Package.swift + ${serverUrl[1]} (Swift backend)`;\n } else {\n found = `${layout} (Swift backend layout)`;\n }\n } else if (isApp) {\n appType = 'app';\n framework = '';\n found = `${xcodeprojs[0]} + ${xcode.hit || 'application'} (Swift app)`;\n } else if (isCliStack || (isExecutable && !isServer && !isMcp)) {\n appType = 'cli';\n framework = cliProd?.[1] || cliUrl?.[1] || '';\n if (cliProd) {\n found = `Package.swift + product ${cliProd[1]} (Swift CLI)`;\n } else if (cliUrl) {\n found = `Package.swift + ${cliUrl[1]} (Swift CLI)`;\n } else if (signals?.hasExecutableProduct) {\n found = 'Package.swift + .executable product (Swift CLI)';\n } else {\n found = 'Package.swift + .executableTarget (Swift CLI)';\n }\n } else if (xcode.hasTool && !hasPkg) {\n appType = 'cli';\n found = `${xcodeprojs[0]} + tool productType (Swift CLI)`;\n } else if (hasPkg) {\n appType = 'library';\n if (signals?.hasLibraryProduct) {\n found = 'Package.swift + .library product (Swift library)';\n } else {\n found = 'Package.swift (Swift library)';\n }\n } else {\n // xcodeproj without application/tool productType — weak library/app unknown\n appType = 'library';\n found = `${xcodeprojs[0] || 'xcodeproj'} (Swift — no classifying productType)`;\n }\n\n return { appType, framework, packageManager, found };\n}\n",
112
112
  "/**\n * Relentless — the 6-W human-context extractor. \"Never gives up on finding\n * context\" (the v5 RelentlessContextExtractor), rewritten v6-native + sync and\n * realigned to FAF's no-guess doctrine: it reads EVERY source (manifest +\n * README, tiered) but FILLS ONLY from sourced evidence. The v5 INFERRED tiers\n * (guess from project name / tech stack) are deliberately dropped —\n * sourced-or-empty; `faf go` is where the human confirms.\n *\n * Pairs with Turbo-Cat: Turbo-Cat fills STACK slots from file formats;\n * Relentless fills the 6 HUMAN-CONTEXT slots (who/what/why/where/when/how) by\n * reading. WHO is the target AUDIENCE (not the package author — a v5 conflation\n * this rewrite corrects).\n */\n\nimport { readRepoFile } from '../core/safe-write.js';\n\ninterface PkgJson {\n description?: string;\n repository?: string | { url?: string };\n homepage?: string;\n scripts?: Record<string, string>;\n keywords?: string[];\n}\n\nexport interface SeededContext {\n who?: string;\n what?: string;\n why?: string;\n where?: string;\n when?: string;\n how?: string;\n}\n\n/**\n * A sourced 6-W value WITH its provenance — where it came from and how much to\n * trust it. The honesty gate: a fill the human can audit before confirming.\n * - `source`: the artifact + locus it was relocated from, e.g.\n * 'package.json:description' or 'README:## Why'. If we can't name a source,\n * we don't emit a value — sourced-or-empty, never invented.\n * - `confidence`: 0..1 by source quality (structured field > named section >\n * heuristic match). A signal for the seeded/confirm UI, not a score.\n */\nexport interface SourcedValue {\n value: string;\n source: string;\n confidence: number;\n}\n\nexport interface SeededContextDetailed {\n who?: SourcedValue;\n what?: SourcedValue;\n why?: SourcedValue;\n where?: SourcedValue;\n when?: SourcedValue;\n how?: SourcedValue;\n}\n\nconst sv = (value: string, source: string, confidence: number): SourcedValue => ({ value, source, confidence });\n\n/**\n * The 6-W extractor WITH provenance — each slot carries {value, source,\n * confidence}. This is the auditable form: the seeded/confirm UI can show the\n * human WHERE a value was relocated from before they accept it.\n */\n/** `toolingRoot`: the repo root's package.json is a tooling shell (polyglot repo\n * — real code is in sibling dirs), so its description/repo/scripts describe the\n * tooling, not the product. Skip package.json-sourced context; README only. */\nexport interface RelentlessOpts { toolingRoot?: boolean }\n\nexport function relentlessContextDetailed(dir: string, opts: RelentlessOpts = {}): SeededContextDetailed {\n const pkg = opts.toolingRoot ? null : readPkg(dir);\n const readme = cleanReadme(dir);\n const out: SeededContextDetailed = {};\n const set = (k: keyof SeededContextDetailed, v: SourcedValue | null): void => {\n if (v) {out[k] = v;}\n };\n\n set('what', extractWhat(pkg, readme));\n set('who', extractWho(readme));\n set('why', extractWhy(readme));\n set('where', extractWhere(pkg, readme));\n set('when', extractWhen(readme));\n set('how', extractHow(pkg, readme));\n\n return out;\n}\n\n/**\n * The bare 6-W extractor — values only, backward-compatible. A pure projection\n * of `relentlessContextDetailed` (single internal source; identical output to\n * the pre-provenance version). Existing consumers (claude-faf-mcp's faf_auto)\n * keep working unchanged; opt into provenance via the Detailed form.\n */\nexport function relentlessContext(dir: string, opts: RelentlessOpts = {}): SeededContext {\n const detailed = relentlessContextDetailed(dir, opts);\n const seed: SeededContext = {};\n (Object.keys(detailed) as (keyof SeededContextDetailed)[]).forEach((k) => {\n const sourced = detailed[k];\n if (sourced) {seed[k] = sourced.value;}\n });\n return seed;\n}\n\nfunction readPkg(dir: string): PkgJson | null {\n const text = readRepoFile(dir, 'package.json');\n if (text === null) {return null;}\n try {\n return JSON.parse(text) as PkgJson;\n } catch {\n return null;\n }\n}\n\n/** README with HTML tags + badge lines stripped (so we don't seed shields.io noise). */\nfunction cleanReadme(dir: string): string {\n const txt = readRepoFile(dir, 'README.md');\n if (txt === null) {return '';}\n return txt\n .replace(/<!--[\\s\\S]*?-->/g, '') // HTML comment blocks (asset notes, TODOs — not prose)\n .split('\\n')\n .filter((l) => !/^\\s*\\[!\\[/.test(l) && !/^\\s*!\\[/.test(l)) // badge lines\n .join('\\n')\n .replace(/<[^>]+>/g, '') // HTML tags\n .replace(/!\\[[^\\]]*\\]\\([^)]*\\)/g, '') // inline images/badges\n .trim();\n}\n\nfunction clean(text: string): string {\n return text.replace(/\\s+/g, ' ').replace(/[#*`>]/g, '').trim().slice(0, 280);\n}\n\n/** Share of a string's characters that sit inside markdown/inline links. */\nfunction linkDensity(s: string): number {\n if (!s) {return 0;}\n const linked = (s.match(/\\[[^\\]]*\\]\\([^)]*\\)/g) ?? []).join('').length;\n return linked / s.length;\n}\n\n/** First `## Section` body matching any of the pipe-listed names (min 20 chars).\n * Returns the cleaned body AND the matched heading (for provenance labels).\n * Rejects link-list bodies (nav / roadmap-link rows are not prose). */\nfunction section(readme: string, names: string): { body: string; heading: string } | null {\n const re = new RegExp(`##?\\\\s+(${names})\\\\s*\\\\n+([\\\\s\\\\S]+?)(?:\\\\n\\\\n|\\\\n##?|$)`, 'i');\n const m = readme.match(re);\n if (!m || !m[2] || m[2].trim().length <= 20 || linkDensity(m[2]) > 0.4) {return null;}\n return { body: clean(m[2]), heading: m[1].trim() };\n}\n\n/**\n * True when a README intro paragraph is a callout / nav row / pre-release\n * banner rather than a description. These sit above the real first prose on\n * many repos (future-agi opens with a `> ⚠️ Nightly release…` blockquote) and\n * must not seed `human_context.what`.\n */\nfunction isNonProseIntro(p: string): boolean {\n const t = p.trim();\n // Blockquote callout — GitHub admonitions (> [!NOTE] / > [!WARNING]) included\n if (/^>/.test(t)) {return true;}\n // Pre-release / status banner phrasing\n if (/\\b(nightly (release|build)|pre-?release|work[-\\s]in[-\\s]progress|rough edges|early (access|testing|preview)|use at your own risk|not (yet )?production[-\\s]?ready|expect (rough|breaking)|experimental release)\\b/i.test(t)) {return true;}\n // Nav / link row: 3+ short fragments split on · or |\n const frags = t.split(/[·|]/).map((s) => s.trim()).filter(Boolean);\n if (frags.length >= 3 && frags.every((f) => f.length <= 24)) {return true;}\n return false;\n}\n\n/** First capturing-group match across patterns whose capture meets minLen. */\nfunction firstMatch(text: string, patterns: RegExp[], minLen = 30): string | null {\n for (const re of patterns) {\n const m = text.match(re);\n if (m && m[1] && m[1].trim().length >= minLen) {return clean(m[1]);}\n }\n return null;\n}\n\nfunction extractWhat(pkg: PkgJson | null, readme: string): SourcedValue | null {\n if (pkg?.description && pkg.description.length > 20) {return sv(clean(pkg.description), 'package.json:description', 0.95);}\n const sec = section(readme, 'Purpose|What|About|Overview|Description');\n if (sec) {return sv(sec.body, `README:## ${sec.heading}`, 0.8);}\n const firstReal = readme\n .split(/\\n\\s*\\n/)\n .map((p) => p.replace(/\\s+/g, ' ').trim())\n .find((p) => p.length > 30 && !p.startsWith('#') && !isNonProseIntro(p));\n if (firstReal) {return sv(clean(firstReal), 'README:first-paragraph', 0.5);}\n const fm = firstMatch(readme, [\n /(?:core|main|primary)\\s+(?:problem|challenge)(?:\\s+is)?\\s*:?\\s*([^.\\n]{30,})/i,\n /solves?\\s+(?:the\\s+)?(?:problem\\s+of\\s+)?([^.\\n]{30,})/i,\n ]);\n return fm ? sv(fm, 'README:problem-heuristic', 0.6) : null;\n}\n\nfunction extractWho(readme: string): SourcedValue | null {\n const sec = section(readme, 'Audience|Who|Who is this for|Who it.s for');\n if (sec) {return sv(sec.body, `README:## ${sec.heading}`, 0.8);}\n const fm = firstMatch(\n readme,\n [\n // optional qualifier before the role word, so \"for backend teams\" /\n // \"for indie developers\" match — not just a bare role. Dogfood-caught.\n /\\b(?:designed|built|made)\\s+for\\s+((?:[a-z][a-z-]*\\s+)?(?:developers?|teams?|engineers?|builders?|founders?)[^.\\n]{0,80})/i,\n /\\bfor\\s+((?:[a-z][a-z-]*\\s+)?(?:developers?|teams?|engineers?|builders?|founders?)[^.\\n]{0,80})/i,\n ],\n 8,\n );\n return fm ? sv(fm, 'README:audience-heuristic', 0.6) : null;\n}\n\nfunction extractWhy(readme: string): SourcedValue | null {\n const sec = section(readme, 'Why|Mission|Motivation|Rationale|Vision');\n if (sec) {return sv(sec.body, `README:## ${sec.heading}`, 0.8);}\n // DECLARATIVE only — \"our mission is X\", \"the goal is X\", \"Mission: X\". The\n // bare noun is NOT enough: \"(name + goal + the six Ws)\" must not match (it did,\n // and grabbed the rest of the line — a real bug the provenance dogfood caught).\n const fm = firstMatch(readme, [\n /(?:our\\s+|the\\s+)?(?:mission|purpose|goal)\\s+is\\s+([^.\\n]{30,})/i,\n /\\b(?:mission|purpose|goal)\\s*:\\s*([^.\\n]{30,})/i,\n /(?:built|created|designed)\\s+(?:because|to)\\s+([^.\\n]{30,})/i,\n ]);\n return fm ? sv(fm, 'README:mission-heuristic', 0.6) : null;\n}\n\nfunction extractWhere(pkg: PkgJson | null, readme: string): SourcedValue | null {\n const repo = typeof pkg?.repository === 'string' ? pkg.repository : pkg?.repository?.url;\n if (repo) {return sv(clean(repo.replace(/^git\\+/, '').replace(/\\.git$/, '')), 'package.json:repository', 0.95);}\n if (pkg?.homepage) {return sv(clean(pkg.homepage), 'package.json:homepage', 0.9);}\n const fm = firstMatch(\n readme,\n // {3,80} + minLen 3 so short platform names (\"npm\", \"AWS\") match —\n // \"Published on npm.\" used to slip past the 4-char floor. Dogfood-caught.\n [/\\b(?:deployed|hosted|available|published)\\s+(?:on|at|via)\\s+([^.\\n]{3,80})/i],\n 3,\n );\n return fm ? sv(fm, 'README:deploy-heuristic', 0.6) : null;\n}\n\nfunction extractWhen(readme: string): SourcedValue | null {\n const sec = section(readme, 'Timeline|Status|Release|Roadmap');\n if (sec) {return sv(sec.body, `README:## ${sec.heading}`, 0.8);}\n const fm = firstMatch(\n readme,\n [\n /\\b(production\\s+since\\s+[^.\\n]{4,60})/i,\n /\\b((?:in\\s+)?(?:production|beta|alpha|development)\\s+since\\s+[^.\\n]{4,60})/i,\n /\\bsince\\s+((?:[A-Z][a-z]+\\s+)?\\d{4}[^.\\n]{0,40})/,\n ],\n 4,\n );\n return fm ? sv(fm, 'README:since-heuristic', 0.6) : null;\n}\n\nfunction extractHow(pkg: PkgJson | null, readme: string): SourcedValue | null {\n const scripts = pkg?.scripts ? Object.keys(pkg.scripts) : [];\n const run = ['start', 'dev', 'build'].filter((s) => scripts.includes(s));\n if (run.length) {return sv(clean(run.map((s) => `npm run ${s}`).join(', ')), 'package.json:scripts', 0.9);}\n const usage = section(readme, 'Usage|Getting Started|Install|Installation|Quick Start');\n if (usage) {return sv(usage.body, `README:## ${usage.heading}`, 0.8);}\n const arch = section(readme, 'Architecture|Approach|How it works|Methodology|How');\n return arch ? sv(arch.body, `README:## ${arch.heading}`, 0.7) : null;\n}\n",
113
- "/**\n * The `.faf` format series a freshly written file is stamped with — the single\n * source of truth for `faf_version`.\n *\n * Everything that authors a new `.faf` (detect, recover, conductor) and the\n * `migrate` target reads it from here, so the version can never drift file-to-\n * file again. (That drift is exactly what left those paths stranded on the old\n * `2.5.0` while the ecosystem moved to the `3.0` series.)\n */\nexport const FAF_VERSION = '3.0';\n",
113
+ "/**\n * The `.faf` format series a freshly written file is stamped with — the single\n * source of truth for `faf_version`.\n *\n * Everything that authors a new `.faf` (detect, conductor) and the\n * `migrate` target reads it from here, so the version can never drift file-to-\n * file again. (That drift is exactly what left those paths stranded on the old\n * `2.5.0` while the ecosystem moved to the `3.0` series.)\n */\nexport const FAF_VERSION = '3.0';\n",
114
114
  "import { join } from 'path';\nimport { readRepoDir, readRepoFile, repoExists, withRepoRoot } from '../core/safe-write.js';\nimport type { DetectedFramework, Signal } from '../core/types.js';\nimport { NO_CLASSIFYING_SIGNALS } from '../core/slots.js';\nimport { FRAMEWORKS } from './frameworks.js';\nimport { detectDartProject } from './dart.js';\nimport { detectGoProject } from './go.js';\nimport { detectCsharpProject, listRootCsprojs } from './csharp.js';\nimport { detectJvmProject, isJvmRoot } from './jvm.js';\nimport { detectRubyProject } from './ruby.js';\nimport { detectSwiftProject } from './swift.js';\n\ninterface PackageJson {\n name?: string;\n version?: string;\n description?: string;\n keywords?: string[];\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n scripts?: Record<string, string>;\n type?: string;\n main?: string;\n types?: string;\n exports?: unknown;\n bin?: string | Record<string, string>;\n private?: boolean;\n workspaces?: string[] | { packages?: string[] };\n files?: string[];\n}\n\n/** Read [package].name field from Cargo.toml — naive but adequate. */\nfunction readCargoName(dir: string): string | null {\n const content = readRepoFile(dir, 'Cargo.toml');\n if (content === null) {return null;}\n const m = content.match(/^\\s*\\[package\\][\\s\\S]*?^\\s*name\\s*=\\s*\"([^\"]+)\"/m);\n return m ? m[1] : null;\n}\n\n/** True if Cargo.toml declares one or more `[[bin]]` sections — Rust cli marker. */\nfunction hasCargoBin(dir: string): boolean {\n const content = readRepoFile(dir, 'Cargo.toml');\n return content !== null && /^\\s*\\[\\[bin\\]\\]/m.test(content);\n}\n\n/** Detect SDK signals — keyword-based per the SDK-priority doctrine.\n * Returns the matched evidence string, or null if no SDK signal. */\nfunction detectSdkSignal(dir: string, pkg: PackageJson | null): string | null {\n // pkg.keywords contains 'sdk'\n if (pkg?.keywords?.some(k => /^sdk(?:\\s|-|$)|-sdk$/i.test(k))) {\n return 'package.json keywords contains \"sdk\"';\n }\n // pkg.name contains 'sdk' or '-sdk' suffix\n if (pkg?.name && /(?:^|[-_/])sdk(?:[-_/]|$)/i.test(pkg.name)) {\n return `package.json name \"${pkg.name}\" → sdk`;\n }\n // Cargo.toml [package].name contains 'sdk'\n const cargoName = readCargoName(dir);\n if (cargoName && /(?:^|[-_])sdk(?:[-_]|$)/i.test(cargoName)) {\n return `Cargo.toml name \"${cargoName}\" → sdk`;\n }\n return null;\n}\n\n/** Browser / Chrome extension signal — a manifest.json that declares\n * `manifest_version` (the defining MV2/MV3 trait, absent from PWA web-app\n * manifests). Checked at the repo root and common source/build locations,\n * since extensions often keep the manifest under public/ or src/. */\nfunction detectExtensionSignal(dir: string): string | null {\n const candidates = [\n 'manifest.json',\n 'public/manifest.json',\n 'src/manifest.json',\n 'app/manifest.json',\n 'extension/manifest.json',\n 'dist/manifest.json',\n ];\n for (const rel of candidates) {\n const text = readRepoFile(dir, rel);\n if (text === null) {continue;}\n try {\n const parsed = JSON.parse(text) as { manifest_version?: unknown };\n if (typeof parsed.manifest_version === 'number') {\n return `${rel} manifest_version ${parsed.manifest_version} (browser extension)`;\n }\n } catch { /* not valid JSON / unreadable — keep scanning */ }\n }\n return null;\n}\n\n/** Python data-science dependency detection (pyproject.toml + requirements.txt). */\nfunction detectDataScienceSignal(dir: string): string | null {\n const dsPatterns = /(numpy|pandas|jupyter|scikit-learn|sklearn|pytorch|tensorflow|matplotlib|scipy)/i;\n const pyproject = readRepoFile(dir, 'pyproject.toml');\n if (pyproject !== null) {\n const match = pyproject.match(dsPatterns);\n if (match) {return `pyproject.toml depends on ${match[1]}`;}\n }\n const reqs = readRepoFile(dir, 'requirements.txt');\n if (reqs !== null) {\n const match = reqs.match(dsPatterns);\n if (match) {return `requirements.txt contains ${match[1]}`;}\n }\n return null;\n}\n\n/** Mobile platform signal — JS mobile (React Native / Expo / Capacitor / Ionic)\n * + native ios/android dirs. Flutter/Dart is handled by detectDartProject. */\nfunction detectMobileSignal(dir: string, pkg: PackageJson | null): string | null {\n const mobileDeps = ['react-native', 'expo', '@capacitor/core', '@ionic/core'];\n if (pkg) {\n for (const dep of mobileDeps) {\n if (pkg.dependencies?.[dep] || pkg.devDependencies?.[dep]) {\n return `${dep} dependency`;\n }\n }\n }\n if (repoExists(dir, 'ios') && repoExists(dir, 'android')) {\n return 'ios/ + android/ dirs';\n }\n return null;\n}\n\n/** WASM target detection (Cargo cdylib + wasm32 OR build.zig wasm OR pkg WASM build scripts). */\nfunction detectWasmSignal(dir: string, pkg: PackageJson | null): string | null {\n const cargo = readRepoFile(dir, 'Cargo.toml');\n if (cargo !== null) {\n // crate-type = [\"cdylib\"] is the canonical wasm-output marker\n if (/crate-type\\s*=\\s*\\[[^\\]]*\"cdylib\"/.test(cargo)) {\n return 'Cargo.toml crate-type = [\"cdylib\"]';\n }\n // wasm-bindgen / wasm-pack as deps\n if (/wasm-bindgen|wasm-pack/i.test(cargo)) {\n return 'Cargo.toml wasm-bindgen/wasm-pack';\n }\n }\n // Zig WASM target — build.zig with .wasm or wasm in script\n const buildZig = readRepoFile(dir, 'build.zig');\n if (buildZig !== null && /\\.wasm\\b|wasm32|setOutputFormat\\(\\.wasm/i.test(buildZig)) {\n return 'build.zig wasm target';\n }\n // pkg keywords contains 'wasm' AND no app frameworks\n if (pkg?.keywords?.some(k => /^wasm(?:-|$)|webassembly/i.test(k))) {\n return 'package.json keywords contains \"wasm\"';\n }\n return null;\n}\n\n/** Bare HTML / vanilla site detection. */\nfunction detectHtmlSignal(dir: string, pkg: PackageJson | null): string | null {\n // Must have index.html at root\n if (!repoExists(dir, 'index.html')) {return null;}\n // Must NOT have any frontend deps (those would classify as frontend/website/etc)\n if (pkg?.dependencies || pkg?.devDependencies) {\n const allDeps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };\n const frontendDeps = ['react', 'vue', 'svelte', '@sveltejs/kit', 'next', 'nuxt', 'astro', 'gatsby', 'solid-js', 'qwik'];\n if (frontendDeps.some(d => allDeps[d])) {return null;}\n }\n return 'index.html (vanilla, no frontend framework)';\n}\n\n/** Documentation / spec-only repo signal. */\nfunction detectDocumentationSignal(dir: string, pkg: PackageJson | null): string | null {\n // Strong signal: name or keywords contains 'specification'\n if (pkg?.name && /specification|^@.*\\/spec/i.test(pkg.name)) {\n return `package name \"${pkg.name}\" → documentation`;\n }\n if (pkg?.keywords?.some(k => /^(specification|format-spec|standard)$/i.test(k))) {\n return 'package keywords contains \"specification\"';\n }\n // A publishable CLI/bin package is never \"docs-only\" — even if `files` is\n // npm-publish-narrow (e.g. [\"dist\", \"README.md\"]). Bare `dist`/`src`/`bin`\n // without a trailing slash is still source, not documentation.\n // (agents-md-facts false positive: bin present + files:[\"dist\",\"README.md\",\"LICENSE\"]\n // classified as documentation before the cli check could run.)\n if (pkg?.bin) {\n return null;\n }\n // pkg.files contains only md / examples / assets (no dist/, no src/)\n if (pkg?.files && pkg.files.length > 0) {\n // Match \"dist\", \"dist/\", \"src/cli.ts\", \"*.js\", etc. — bare publish dirs count as source\n const sourcePatterns =\n /^(dist|src|lib|build|bin)(\\/|$)|\\/(dist|src|lib|build|bin)(\\/|$)|(\\.|\\/)(js|ts|tsx|jsx|mjs|cjs|py|rs|go)$/;\n const hasSource = pkg.files.some(f => sourcePatterns.test(f));\n const hasDocs = pkg.files.some(f => /\\.(md|MD)$|examples?\\//.test(f) || f === 'README.md' || f === 'docs' || f === 'docs/');\n if (!hasSource && hasDocs) {\n return 'package.json files = docs/examples only (no source)';\n }\n }\n return null;\n}\n\n/** Marketing / website signal — Astro/Gatsby static OR pkg keywords. */\nfunction detectWebsiteSignal(dir: string, pkg: PackageJson | null, frameworks: DetectedFramework[]): string | null {\n // Astro/Gatsby are typically used for content/marketing sites\n const astroOrGatsby = frameworks.find(f => f.slug === 'astro' || f.slug === 'gatsby');\n if (astroOrGatsby) {return `${astroOrGatsby.name} (static-site framework)`;}\n // pkg.keywords explicitly marketing\n if (pkg?.keywords?.some(k => /^(website|marketing|landing|brochure|portfolio)$/i.test(k))) {\n return 'package keywords contains \"website\"/\"marketing\"/\"landing\"';\n }\n return null;\n}\n\n/** SAAS shape — auth + payments + database + dashboard. */\nfunction detectSaasSignal(dir: string, pkg: PackageJson | null): string | null {\n if (!pkg) {return null;}\n const allDeps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };\n const authDeps = ['@clerk/nextjs', '@clerk/clerk-react', 'next-auth', '@auth/core', 'auth0', '@auth0/nextjs-auth0'];\n const paymentDeps = ['stripe', '@stripe/stripe-js', 'lemonsqueezy'];\n const hasAuth = authDeps.some(d => allDeps[d]);\n const hasPayment = paymentDeps.some(d => allDeps[d]);\n if (hasAuth && hasPayment) {\n return 'auth + payment dependencies';\n }\n return null;\n}\n\n/** MCPaaS (post-MCP platform) shape — multiple MCP signals + hosting + DB. */\nfunction detectMcpaasSignal(dir: string, pkg: PackageJson | null, frameworks: DetectedFramework[]): string | null {\n // pkg.keywords contains 'mcpaas' is the strongest signal\n if (pkg?.keywords?.some(k => /mcpaas/i.test(k))) {\n return 'package keywords contains \"mcpaas\"';\n }\n // pkg.name contains 'mcpaas'\n if (pkg?.name && /mcpaas/i.test(pkg.name)) {\n return `package name \"${pkg.name}\" → mcpaas`;\n }\n // Multi-signal: MCP framework + database + hosting (a platform, not a single server)\n const hasMcp = frameworks.some(f => f.slug === 'mcp');\n const hasDb = frameworks.some(f => f.category === 'database');\n if (hasMcp && hasDb && pkg?.dependencies && Object.keys(pkg.dependencies).length > 10) {\n return 'MCP + database + complex deps (platform shape)';\n }\n return null;\n}\n\n/** Monorepo-root — private workspace with multiple packages, no single dominant FW. */\nfunction detectMonorepoRootSignal(dir: string, pkg: PackageJson | null): string | null {\n if (!pkg?.private) {return null;}\n const hasWorkspaces = !!pkg.workspaces || repoExists(dir, 'pnpm-workspace.yaml');\n if (!hasWorkspaces) {return null;}\n return 'private workspace + multi-package';\n}\n\n/** Top-level dirs that never hold an app component. */\nconst SUBDIR_IGNORE = new Set([\n 'node_modules', 'dist', 'build', 'out', 'vendor', 'target', 'coverage',\n 'docs', 'doc', 'e2e', 'tests', 'test', '__tests__', 'scripts', 'deploy',\n 'bin', 'public', 'examples', 'example', 'fixtures', 'assets', 'static',\n 'migrations', 'config', 'contracts', 'proto', 'protos',\n]);\n\nconst BACKEND_LANG_RE = /^(Python|Go|Rust|Ruby|Java|Kotlin)$/;\n\n/** One app component discovered directly under the repo root. */\nexport interface SubdirStack {\n /** basename */\n name: string;\n /** detectLanguage() of the subdir */\n language: string;\n /** highest-confidence real-stack framework in the subdir (never Docker/CI/etc.) */\n topFramework: string | null;\n frontend: boolean;\n backend: boolean;\n /** a real-stack framework (not infra) was detected — ranks it as the \"primary\" */\n hasFramework: boolean;\n /** a \"this dir IS the app\" marker (manage.py / config.ru / bin/rails) */\n appRoot: boolean;\n}\n\n/** Framework categories that describe the app's own stack (not infra/tooling). */\nconst STACK_FW_CATEGORIES = new Set(['frontend', 'backend', 'database', 'css', 'ui', 'state']);\n\n/** A directory carries a real language manifest (not just tooling/config). */\nfunction hasLanguageManifest(d: string): boolean {\n if (\n repoExists(d, 'pyproject.toml') || repoExists(d, 'manage.py') ||\n repoExists(d, 'setup.py') || fileExists(d, 'requirements*.txt')\n ) {return true;}\n if (repoExists(d, 'go.mod')) {return true;}\n if (repoExists(d, 'Cargo.toml')) {return true;}\n if (repoExists(d, 'Gemfile')) {return true;}\n if (repoExists(d, 'pom.xml') || fileExists(d, 'build.gradle*')) {return true;}\n if (listRootCsprojs(d).length > 0) {return true;}\n const pkg = readPackageJson(d);\n if (pkg && Object.keys(pkg.dependencies ?? {}).length > 0) {return true;}\n return false;\n}\n\n/** Shallow (depth-1) scan for per-subdirectory app stacks. Feeds the polyglot\n * classifier + `main_language` aggregation. A dir counts only when it carries a\n * real language manifest. This is NOT monorepo tooling — it only exists to stop\n * a repo whose real stack lives in subdirs from falling to the `library` lie. */\nexport function detectSubdirStacks(dir: string): SubdirStack[] {\n // The project folder bounds every read below it: a subfolder's manifest may\n // link anywhere inside the project, never out of it.\n return withRepoRoot(dir, () => subdirStacks(dir));\n}\n\nfunction subdirStacks(dir: string): SubdirStack[] {\n const entries = readRepoDir(dir) ?? [];\n const out: SubdirStack[] = [];\n for (const e of entries) {\n if (!e.isDirectory() || e.name.startsWith('.') || SUBDIR_IGNORE.has(e.name)) {continue;}\n const sub = join(dir, e.name);\n if (!hasLanguageManifest(sub)) {continue;}\n const language = detectLanguage(sub);\n if (!language) {continue;}\n const fws = detectFrameworks(sub).filter(f => STACK_FW_CATEGORIES.has(f.category));\n const fe = fws.find(f => f.category === 'frontend');\n const be = fws.find(f => f.category === 'backend');\n const top = fe ?? be ?? fws[0] ?? null;\n out.push({\n name: e.name,\n language,\n topFramework: top?.name ?? null,\n frontend: !!fe,\n backend: !!be || BACKEND_LANG_RE.test(language),\n hasFramework: !!top,\n appRoot:\n repoExists(sub, 'manage.py') ||\n repoExists(sub, 'config.ru') ||\n repoExists(sub, 'bin/rails') ||\n repoExists(sub, 'artisan'),\n });\n }\n return out;\n}\n\n/** Polyglot signal — ≥2 sibling app dirs, ≥2 distinct languages, a frontend AND\n * a backend among them. Returns the `# found:` evidence string, or null. */\nexport function detectPolyglotSignal(dir: string, pkg: PackageJson | null): string | null {\n if (pkg?.workspaces || repoExists(dir, 'pnpm-workspace.yaml')) {return null;}\n const subs = detectSubdirStacks(dir);\n const langs = new Set(subs.map(s => s.language));\n if (subs.length < 2 || langs.size < 2) {return null;}\n if (!subs.some(s => s.frontend) || !subs.some(s => s.backend)) {return null;}\n return `polyglot: ${subs.map(s => `${s.name}/ (${s.language})`).join(', ')}`;\n}\n\n/** Aggregate the polyglot `main_language` string — primary first (a framework-\n * bearing backend dir wins), deduped by language, roles annotated.\n * e.g. \"Python (Django · backend); JavaScript (React · frontend); Go (service)\" */\nexport function detectPolyglotLanguage(dir: string): string | null {\n const subs = detectSubdirStacks(dir);\n if (subs.length < 2) {return null;}\n const score = (s: SubdirStack): number =>\n (s.appRoot ? 2 : 0) +\n (BACKEND_LANG_RE.test(s.language) ? 2 : 0) +\n (s.hasFramework ? 1 : 0) +\n (s.frontend ? 0.5 : 0);\n const ranked = [...subs].sort((a, b) => score(b) - score(a));\n const seen = new Set<string>();\n const parts: string[] = [];\n for (const s of ranked) {\n if (seen.has(s.language)) {continue;}\n seen.add(s.language);\n const role = s.frontend ? 'frontend' : s.backend ? 'backend' : 'service';\n parts.push(s.topFramework ? `${s.language} (${s.topFramework} · ${role})` : `${s.language} (${role})`);\n }\n return parts.join('; ');\n}\n\n/** Read and parse package.json from a directory */\nexport function readPackageJson(dir: string): PackageJson | null {\n const text = readRepoFile(dir, 'package.json');\n if (text === null) {return null;}\n try {\n return JSON.parse(text);\n } catch {\n return null;\n }\n}\n\n/** Scan a directory for files matching patterns */\nfunction fileExists(dir: string, pattern: string): boolean {\n // Handle simple file checks\n if (!pattern.includes('*')) {\n return repoExists(dir, pattern);\n }\n\n // Handle glob patterns like \"next.config.*\" or \".github/workflows/*.yml\"\n const parts = pattern.split('/');\n if (parts.length === 1) {\n // Simple wildcard: \"next.config.*\"\n const prefix = pattern.split('*')[0];\n return (readRepoDir(dir) ?? []).some(e => e.name.startsWith(prefix));\n }\n\n // Multi-level: \".github/workflows/*.yml\"\n const subdir = join(...parts.slice(0, -1));\n const filePattern = parts[parts.length - 1];\n const prefix = filePattern.split('*')[0];\n const suffix = filePattern.split('*')[1] || '';\n return (readRepoDir(dir, subdir) ?? []).some(e => e.name.startsWith(prefix) && e.name.endsWith(suffix));\n}\n\n/** Match a single signal against project data */\nfunction matchSignal(signal: Signal, pkg: PackageJson | null, dir: string): boolean {\n switch (signal.type) {\n case 'dependency':\n return !!(pkg?.dependencies?.[signal.key!]);\n case 'devDependency':\n return !!(pkg?.devDependencies?.[signal.key!]);\n case 'anyDependency': {\n const key = signal.key ?? '';\n return !!(pkg?.dependencies?.[key] || pkg?.devDependencies?.[key]);\n }\n case 'file':\n return fileExists(dir, signal.pattern!);\n case 'content': {\n // File must exist AND contain key (case-insensitive). Used so pom/gradle\n // alone never claim Spring Boot — JVM Edition kill line for tech_stack.\n if (!signal.pattern || !signal.key) {return false;}\n if (!fileExists(dir, signal.pattern)) {return false;}\n // A glob pattern names no one file: there is nothing to read, so no match.\n const body = readRepoFile(dir, signal.pattern);\n return body !== null && body.toLowerCase().includes(signal.key.toLowerCase());\n }\n default:\n return false;\n }\n}\n\n/** Detect frameworks in a directory */\nexport function detectFrameworks(dir: string): DetectedFramework[] {\n const pkg = readPackageJson(dir);\n\n return FRAMEWORKS\n .map(fw => {\n const matched = fw.signals.filter(s => matchSignal(s, pkg, dir));\n const confidence = matched.length / fw.signals.length;\n return { name: fw.name, slug: fw.slug, category: fw.category, confidence };\n })\n .filter(fw => fw.confidence > 0)\n .sort((a, b) => b.confidence - a.confidence);\n}\n\n/** Detect the primary language of a project from its manifests — `''` when\n * there is no evidence. */\nexport function detectLanguage(dir: string): string {\n const pkg = readPackageJson(dir);\n\n // Check for TypeScript\n if (pkg?.devDependencies?.typescript || pkg?.dependencies?.typescript) {return 'TypeScript';}\n if (repoExists(dir, 'tsconfig.json')) {return 'TypeScript';}\n\n // Check for common language indicators\n if (repoExists(dir, 'Cargo.toml')) {return 'Rust';}\n if (repoExists(dir, 'go.mod')) {return 'Go';}\n if (listRootCsprojs(dir).length > 0) {return 'C#';}\n if (repoExists(dir, 'pyproject.toml') || repoExists(dir, 'setup.py')) {return 'Python';}\n if (repoExists(dir, 'Gemfile')) {return 'Ruby';}\n if (isJvmRoot(dir)) {\n const jvm = detectJvmProject(dir);\n if (jvm) {return jvm.mainLanguage === 'Java/Kotlin' ? 'Kotlin' : jvm.mainLanguage;}\n return 'Java';\n }\n if (repoExists(dir, 'Package.swift')) {return 'Swift';}\n if (repoExists(dir, 'build.zig')) {return 'Zig';}\n if (repoExists(dir, 'pubspec.yaml')) {return 'Dart';}\n\n // A package.json with none of the manifests above: JavaScript\n if (pkg) {return 'JavaScript';}\n\n // No evidence: nothing (never a placeholder word for project.faf)\n return '';\n}\n\n/** Project-type detection result + rationale (the #found list).\n * Each `found` entry is a human-readable signal that contributed to the\n * classification — emitted as a YAML comment by `writeFaf` for transparency\n * (\"Glass Hood\" doctrine: the user sees WHY the cli classified as it did). */\nexport interface ProjectTypeDetection {\n type: string;\n /** Signals that matched, in order observed. */\n found: string[];\n}\n\n/** Detect the project type with rationale. The `found` list captures every\n * positive signal that contributed to the classification — used downstream\n * by `writeFaf` to render `# found: <list>` next to `type:` in the .faf.\n *\n * Priority order per v6.6.md doctrine (most-specific first). About is a\n * repo role (`about.represents`), not an app_type — never matches here.\n * Rule: SDK keyword takes priority (sdk wins over library/cli/wasm). */\nexport function detectProjectTypeWithRationale(dir: string): ProjectTypeDetection {\n const pkg = readPackageJson(dir);\n const frameworks = detectFrameworks(dir);\n const found: string[] = [];\n\n // ─── 1. documentation — spec-only / docs-only repos ─────────────────────\n const docSignal = detectDocumentationSignal(dir, pkg);\n if (docSignal) {\n found.push(docSignal);\n return { type: 'documentation', found };\n }\n\n // ─── 2. sdk — SDK keyword/structure WINS over mcpaas/saas/wasm/cli/library ─\n // wolfejam doctrine: if a repo signals SDK (name contains \"-sdk\", keywords\n // contains \"sdk\"), it's an SDK regardless of what platform/wasm/cli signals\n // would also fire. Confirmed for mcpaas-sdk (SDK FOR the platform, not the\n // platform itself).\n const sdkSignal = detectSdkSignal(dir, pkg);\n if (sdkSignal) {\n found.push(sdkSignal);\n return { type: 'sdk', found };\n }\n\n // ─── 3. extension — browser/chrome extension (manifest_version) ─────────\n // manifest_version is the unambiguous MV2/MV3 trait — must beat the framework\n // heuristics below (a framework-built extension would otherwise classify as\n // svelte/frontend/fullstack — confirmed on Stack⚡️Grabber).\n const extensionSignal = detectExtensionSignal(dir);\n if (extensionSignal) {\n found.push(extensionSignal);\n return { type: 'extension', found };\n }\n\n // ─── 4. mcpaas — post-MCP platforms (multiple MCP signals + auth + DB) ──\n const mcpaasSignal = detectMcpaasSignal(dir, pkg, frameworks);\n if (mcpaasSignal) {\n found.push(mcpaasSignal);\n return { type: 'mcpaas', found };\n }\n\n // ─── 5. saas — subscription products (auth + payment) ───────────────────\n const saasSignal = detectSaasSignal(dir, pkg);\n if (saasSignal) {\n found.push(saasSignal);\n return { type: 'saas', found };\n }\n\n // ─── 6. wasm — WASM target in build config ──────────────────────────────\n const wasmSignal = detectWasmSignal(dir, pkg);\n if (wasmSignal) {\n found.push(wasmSignal);\n return { type: 'wasm', found };\n }\n\n // ─── 7. dart/flutter — content-aware pubspec classification. The same\n // manifest backs Flutter apps, Dart CLIs, packages, servers, and MCP\n // servers — branch by deps (Flutter→mobile, Dart MCP→mcp, Dart\n // server→backend, CLI→cli, package→library). Unambiguous Dart. ──────\n const dart = detectDartProject(dir);\n if (dart) {\n found.push(dart.found);\n return { type: dart.appType, found };\n }\n\n // ─── 7a. go — content-aware go.mod classification (same composition as Dart).\n // go.mod alone ≠ backend: MCP · Gin/Echo/… · Cobra/cmd · library. ───\n const go = detectGoProject(dir);\n if (go) {\n found.push(go.found);\n return { type: go.appType, found };\n }\n\n // ─── 7a2. csharp — content-aware .csproj classification.\n // .csproj alone ≠ type: Sdk first · MCP · web/worker · CLI · library. ─\n const csharp = detectCsharpProject(dir);\n if (csharp) {\n found.push(csharp.found);\n return { type: csharp.appType, found };\n }\n\n // ─── 7a3. jvm — content-aware pom/gradle classification.\n // pom/gradle alone ≠ type: plugins · parents · catalogs · MCP · Android/KMP. ─\n const jvm = detectJvmProject(dir);\n if (jvm) {\n found.push(jvm.found);\n return { type: jvm.appType, found };\n }\n\n // ─── 7a4. ruby — content-aware Gemfile classification.\n // Gemfile alone ≠ Rails: gem names · layout · MCP · CLI · library. ─\n const ruby = detectRubyProject(dir);\n if (ruby) {\n found.push(ruby.found);\n return { type: ruby.appType, found };\n }\n\n // ─── 7a5. swift — content-aware Package.swift / Xcode classification.\n // Package.swift alone ≠ app: products · deps · MCP · Vapor · CLI · library. ─\n const swift = detectSwiftProject(dir);\n if (swift) {\n found.push(swift.found);\n return { type: swift.appType, found };\n }\n\n // ─── 7b. mobile — JS mobile platform deps / native dirs ─────────────────\n const mobileSignal = detectMobileSignal(dir, pkg);\n if (mobileSignal) {\n found.push(mobileSignal);\n return { type: 'mobile', found };\n }\n\n // ─── 8. mcp — single MCP server ─────────────────────────────────────────\n const hasMcp = frameworks.some(f => f.slug === 'mcp');\n if (hasMcp) {\n found.push('MCP SDK signal');\n return { type: 'mcp', found };\n }\n\n // ─── 9. cli — Node bin / Cargo [[bin]] / Zig main.zig ───────────────────\n if (pkg?.bin) {\n found.push('package.json bin');\n return { type: 'cli', found };\n }\n if (hasCargoBin(dir)) {\n found.push('Cargo.toml [[bin]]');\n return { type: 'cli', found };\n }\n\n // Zig project-type detection — build.zig + entry-file convention.\n // src/main.zig → cli (executable); src/root.zig → library.\n // main.zig wins when both exist (typical: cli with internal lib exports).\n if (repoExists(dir, 'build.zig')) {\n found.push('build.zig');\n if (repoExists(dir, 'src/main.zig')) {\n found.push('src/main.zig');\n return { type: 'cli', found };\n }\n if (repoExists(dir, 'src/root.zig')) {\n found.push('src/root.zig');\n return { type: 'library', found };\n }\n }\n\n // ─── 10. framework — private workspace + Svelte ──────────────────────────\n const hasSvelte = frameworks.some(f => f.slug === 'svelte' || f.slug === 'sveltekit');\n const isPrivateWorkspace = pkg?.private === true && (\n repoExists(dir, 'pnpm-workspace.yaml') ||\n pkg?.workspaces !== undefined\n );\n if (isPrivateWorkspace && hasSvelte) {\n found.push('private workspace', 'Svelte');\n return { type: 'framework', found };\n }\n\n // ─── 11. svelte — Svelte/SvelteKit app (fullstack by nature) ────────────\n if (hasSvelte) {\n found.push('Svelte/SvelteKit');\n return { type: 'svelte', found };\n }\n\n // ─── 12. enterprise — private workspace + multi-FW (more specific than monorepo-root) ──\n // Must be checked BEFORE monorepo-root (which is private workspace fallback).\n const hasFrontendFw = frameworks.some(f => f.category === 'frontend');\n const hasBackendFw = frameworks.some(f => f.category === 'backend');\n if (\n pkg?.private &&\n (pkg.workspaces || repoExists(dir, 'pnpm-workspace.yaml')) &&\n hasFrontendFw && hasBackendFw\n ) {\n found.push('private workspace + frontend + backend frameworks');\n return { type: 'enterprise', found };\n }\n\n // ─── 13. monorepo-root — private workspace, multi-package, no specific FW story ──\n const monoSignal = detectMonorepoRootSignal(dir, pkg);\n if (monoSignal) {\n found.push(monoSignal);\n return { type: 'monorepo-root', found };\n }\n\n // ─── 14. website — marketing-shape (Astro/Gatsby OR keywords) ───────────\n const websiteSignal = detectWebsiteSignal(dir, pkg, frameworks);\n if (websiteSignal) {\n found.push(websiteSignal);\n return { type: 'website', found };\n }\n\n // ─── 15. fullstack — Next/Nuxt OR (frontend + backend) ──────────────────\n const hasNextOrNuxt = frameworks.some(f => f.slug === 'nextjs' || f.slug === 'nuxt');\n if (hasNextOrNuxt) {\n found.push(frameworks.find(f => f.slug === 'nextjs') ? 'Next.js' : 'Nuxt');\n return { type: 'fullstack', found };\n }\n\n const hasFrontend = frameworks.some(f => f.category === 'frontend');\n const hasBackend = frameworks.some(f => f.category === 'backend');\n if (hasFrontend && hasBackend) {\n found.push('frontend framework', 'backend framework');\n return { type: 'fullstack', found };\n }\n\n // ─── 16. frontend — frontend framework only ─────────────────────────────\n if (hasFrontend) {\n found.push('frontend framework');\n return { type: 'frontend', found };\n }\n\n // ─── 17. backend — backend framework only ───────────────────────────────\n if (hasBackend) {\n found.push('backend framework');\n return { type: 'backend', found };\n }\n\n // ─── 18. data-science — Python DS deps (numpy/pandas/jupyter/sklearn) ───\n const dsSignal = detectDataScienceSignal(dir);\n if (dsSignal) {\n found.push(dsSignal);\n return { type: 'data-science', found };\n }\n\n // ─── 19. html — bare index.html, no framework ──────────────────────────\n const htmlSignal = detectHtmlSignal(dir, pkg);\n if (htmlSignal) {\n found.push(htmlSignal);\n return { type: 'html', found };\n }\n\n // ─── 19b. polyglot — real stack lives in sibling app dirs (FE + BE, ≥2\n // languages). NOT a monorepo tool (that's xai-faf-rust) — this only\n // rescues the repo from the `library` fallback lie below. Uses the\n // existing `fullstack` type (21 slots); no new app_type. ──────────\n const polyglotSignal = detectPolyglotSignal(dir, pkg);\n if (polyglotSignal) {\n found.push(polyglotSignal);\n return { type: 'fullstack', found };\n }\n\n // ─── 20. library — fallback (has main/exports but no bin) ──────────────\n if (pkg?.main && !pkg?.bin) {\n found.push('package.json main (no bin)');\n return { type: 'library', found };\n }\n\n // Default — bare repo with no classifying signals. The type is a\n // classification, not a slot: the file says it is the fallback (`# found:`),\n // and faf auto never writes slotignored over typed words on it.\n found.push(NO_CLASSIFYING_SIGNALS);\n return { type: 'library', found };\n}\n\n/** Detect the project type for slot mapping. Backward-compatible wrapper —\n * returns just the type string. New code should prefer\n * `detectProjectTypeWithRationale` to access the `#found` rationale. */\nexport function detectProjectType(dir: string): string {\n return detectProjectTypeWithRationale(dir).type;\n}\n\n/** Detect the runtime from a runtime file or manifest — `''` when there is\n * no evidence. */\nexport function detectRuntime(dir: string): string {\n if (repoExists(dir, 'bunfig.toml')) {return 'Bun';}\n if (repoExists(dir, 'deno.json') || repoExists(dir, 'deno.jsonc')) {return 'Deno';}\n if (readPackageJson(dir)) {return 'Node.js';}\n if (repoExists(dir, 'Cargo.toml')) {return 'Rust';}\n if (repoExists(dir, 'go.mod')) {return 'Go';}\n if (listRootCsprojs(dir).length > 0) {return '.NET';}\n if (repoExists(dir, 'pubspec.yaml')) {return 'Dart';}\n return '';\n}\n\n/** The JS package managers package.json's `packageManager` field names. */\nconst JS_PACKAGE_MANAGERS = new Set(['npm', 'pnpm', 'yarn', 'bun']);\n\n/** The package manager package.json's `packageManager` field declares\n * (`\"pnpm@9.1.0\"`, corepack's format) — `''` when it names none. */\nfunction declaredPackageManager(dir: string): string {\n const declared = (readPackageJson(dir) as { packageManager?: unknown } | null)?.packageManager;\n if (typeof declared !== 'string') {return '';}\n const name = /^([a-z]+)@/i.exec(declared.trim())?.[1]?.toLowerCase() ?? '';\n return JS_PACKAGE_MANAGERS.has(name) ? name : '';\n}\n\n/** The package manager a non-JS manifest implies, or `''`. */\nfunction manifestPackageManager(dir: string): string {\n if (repoExists(dir, 'pubspec.yaml')) {return 'pub';}\n if (repoExists(dir, 'go.mod')) {return 'go modules';}\n if (listRootCsprojs(dir).length > 0) {return 'NuGet';}\n if (repoExists(dir, 'pom.xml')) {return 'maven';}\n const gradle = ['build.gradle', 'build.gradle.kts', 'settings.gradle', 'settings.gradle.kts'];\n return gradle.some(f => repoExists(dir, f)) ? 'gradle' : '';\n}\n\n/** The JS package manager a committed lockfile names, or `''`. */\nconst LOCKFILES: ReadonlyArray<[file: string, manager: string]> = [\n ['bun.lockb', 'bun'], ['bun.lock', 'bun'], ['pnpm-lock.yaml', 'pnpm'], ['yarn.lock', 'yarn'], ['package-lock.json', 'npm'],\n];\n\n/** Detect the package manager from repo facts — a manifest that implies one,\n * package.json's `packageManager` field, then a lockfile. `''` when there is\n * no evidence: a package.json alone does not say which manager installs it. */\nexport function detectPackageManager(dir: string): string {\n return manifestPackageManager(dir) || declaredPackageManager(dir) || (LOCKFILES.find(([f]) => repoExists(dir, f))?.[1] ?? '');\n}\n\n/** Detect CI/CD */\nexport function detectCicd(dir: string): string | null {\n if (repoExists(dir, '.github/workflows')) {return 'GitHub Actions';}\n if (repoExists(dir, '.gitlab-ci.yml')) {return 'GitLab CI';}\n if (repoExists(dir, '.circleci')) {return 'CircleCI';}\n if (repoExists(dir, 'Jenkinsfile')) {return 'Jenkins';}\n return null;\n}\n\n/** Detect hosting platform — from a platform's own config file. A bare\n * Dockerfile is not one: it shows a container build, not where the app runs. */\nexport function detectHosting(dir: string): string | null {\n if (repoExists(dir, 'vercel.json')) {return 'Vercel';}\n if (repoExists(dir, 'netlify.toml')) {return 'Netlify';}\n if (repoExists(dir, 'wrangler.toml')) {return 'Cloudflare';}\n if (repoExists(dir, 'fly.toml')) {return 'Fly.io';}\n if (repoExists(dir, 'render.yaml')) {return 'Render';}\n return null;\n}\n\n/** Config files that can name a SvelteKit adapter: svelte.config.js up to\n * SvelteKit 2, vite.config.* from SvelteKit 3. */\nconst SVELTE_ADAPTER_CONFIGS = ['svelte.config.js', 'vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs'];\n\n/** The adapter package's suffix (`vercel`, `node`), from the first config\n * that imports one, else from package.json; null when nothing names one. */\nfunction svelteAdapterName(dir: string): string | null {\n // Match adapter imports: import adapter from '@sveltejs/adapter-vercel'\n // Or: import { adapter } from '@sveltejs/adapter-node'\n // Or: const adapter = require('@sveltejs/adapter-static')\n for (const file of SVELTE_ADAPTER_CONFIGS) {\n const match = readRepoFile(dir, file)?.match(/@sveltejs\\/adapter-(\\w+)/);\n if (match) {return match[1];}\n }\n const pkg = readPackageJson(dir);\n const deps = Object.keys({ ...pkg?.dependencies, ...pkg?.devDependencies });\n return deps.map(d => /^@sveltejs\\/adapter-(\\w+)$/.exec(d)?.[1]).find(Boolean) ?? null;\n}\n\n/** Detect SvelteKit adapter from svelte.config.js, vite.config.* or package.json */\nexport function detectSvelteAdapter(dir: string): string | null {\n const adapter = svelteAdapterName(dir);\n if (adapter) {\n switch (adapter) {\n case 'vercel': return 'Vercel';\n case 'node': return 'Node';\n case 'static': return 'Static';\n case 'cloudflare': return 'Cloudflare';\n case 'netlify': return 'Netlify';\n case 'auto': return 'Auto';\n default: return adapter;\n }\n }\n return null;\n}\n\n/** \"Vite 8\" from the vite range package.json declares (`^8.3.2` → 8), or\n * plain \"Vite\" when the range carries no version number (`latest`). */\nexport function viteLabel(pkg: PackageJson | null): string {\n const range = pkg?.devDependencies?.vite ?? pkg?.dependencies?.vite;\n const major = typeof range === 'string' ? /\\d+/.exec(range)?.[0] : undefined;\n return major === undefined ? 'Vite' : `Vite ${major}`;\n}\n\n/** Detect build tool */\nexport function detectBuildTool(dir: string): string | null {\n const pkg = readPackageJson(dir);\n if (pkg?.devDependencies?.vite || pkg?.dependencies?.vite) {return viteLabel(pkg);}\n if (pkg?.devDependencies?.webpack || pkg?.dependencies?.webpack) {return 'webpack';}\n if (pkg?.devDependencies?.esbuild || pkg?.dependencies?.esbuild) {return 'esbuild';}\n if (repoExists(dir, 'tsconfig.json') && pkg?.devDependencies?.typescript) {return 'TypeScript (tsc)';}\n return null;\n}\n\n/* ─── FAFb v2 chunk helpers (canonical YAML keys read by compile_fafb) ──────\n *\n * These detect content for the brick's `tech_stack`, `key_files`, and\n * `commands` chunks. `architecture` and `context` are deliberately left empty\n * for user fill (architecture overlaps with human_context.how; context is\n * free-form additional signal beyond the 6Ws).\n */\n\n/** Detect a list of important file paths for the `key_files` chunk.\n * Returns up to ~10 entries, ordered by canonical importance. */\nexport function detectKeyFiles(dir: string): string[] {\n const candidates = [\n // Manifests\n 'package.json', 'Cargo.toml', 'pyproject.toml', 'go.mod',\n 'build.zig', 'build.zig.zon',\n // Entry points (TS/JS)\n 'src/index.ts', 'src/index.js', 'src/main.ts', 'src/cli.ts',\n // Entry points (Rust)\n 'src/main.rs', 'src/lib.rs',\n // Entry points (Zig)\n 'src/main.zig', 'src/root.zig',\n // Entry points (Python)\n 'src/__init__.py', 'main.py', '__main__.py',\n // Entry points (Go)\n 'main.go', 'cmd/main.go',\n // Specs / docs\n 'README.md', 'SPECIFICATION.md', 'BINARY-FORMAT.md',\n // Config\n 'tsconfig.json', 'wrangler.toml', 'vercel.json',\n ];\n return candidates.filter(f => repoExists(dir, f));\n}\n\n/** Detect build/test/lint commands for the `commands` chunk.\n * Returns a Record<string, string> mapping command name → shell command. */\nexport function detectCommands(dir: string, pkg: PackageJson | null): Record<string, string> {\n const commands: Record<string, string> = {};\n\n // From package.json scripts (most reliable)\n if (pkg?.scripts) {\n for (const key of ['build', 'test', 'lint', 'dev', 'start']) {\n if (pkg.scripts[key]) {\n // Determine the runner — prefer bun if available, else npm\n const runner = repoExists(dir, 'bun.lock') || repoExists(dir, 'bun.lockb')\n ? 'bun run'\n : 'npm run';\n commands[key] = `${runner} ${key}`;\n }\n }\n }\n\n // Rust: cargo builds and tests every Cargo package. Clippy only when the\n // repo configures it — a Cargo.toml alone does not say the project lints with it.\n if (repoExists(dir, 'Cargo.toml')) {\n if (!commands.build) {commands.build = 'cargo build --release';}\n if (!commands.test) {commands.test = 'cargo test';}\n if (!commands.lint && configuresClippy(dir)) {commands.lint = 'cargo clippy';}\n }\n\n // Zig: build.zig is `zig build`'s own script; `zig build test` only when\n // it defines a test step.\n if (repoExists(dir, 'build.zig')) {\n if (!commands.build) {commands.build = 'zig build';}\n if (!commands.test && /\\.step\\(\\s*\"test\"/.test(readText(dir, 'build.zig'))) {commands.test = 'zig build test';}\n }\n\n // Go: the go tool builds and tests every module.\n if (repoExists(dir, 'go.mod')) {\n if (!commands.build) {commands.build = 'go build ./...';}\n if (!commands.test) {commands.test = 'go test ./...';}\n }\n\n // Python: pytest only when the repo says pytest — a pyproject.toml alone\n // does not (unittest, nox and tox are as common).\n if (!commands.test && usesPytest(dir)) {commands.test = 'pytest';}\n\n return commands;\n}\n\n/** A file's text, or `''` when it cannot be read. */\nfunction readText(dir: string, name: string): string {\n return readRepoFile(dir, name) ?? '';\n}\n\n/** The repo configures Clippy: a clippy.toml, or a `[lints.clippy]` table in Cargo.toml. */\nfunction configuresClippy(dir: string): boolean {\n if (repoExists(dir, 'clippy.toml') || repoExists(dir, '.clippy.toml')) {return true;}\n return /^\\s*\\[(workspace\\.)?lints\\.clippy\\]/m.test(readText(dir, 'Cargo.toml'));\n}\n\n/** The repo says pytest: pytest.ini or conftest.py, or pytest named in\n * pyproject.toml, setup.cfg or tox.ini (its config table or a dependency). */\nfunction usesPytest(dir: string): boolean {\n if (repoExists(dir, 'pytest.ini') || repoExists(dir, 'conftest.py')) {return true;}\n return ['pyproject.toml', 'setup.cfg', 'tox.ini'].some(f => /\\bpytest\\b/.test(readText(dir, f)));\n}\n\n/** Detect a tech-stack list for the `tech_stack` chunk.\n * Combines language + frameworks + runtime into a flat list of strings. */\nexport function detectTechStack(\n dir: string,\n pkg: PackageJson | null,\n frameworks: DetectedFramework[],\n language: string,\n): string[] {\n const stack: string[] = [];\n\n // Language goes first\n if (language && language !== 'Unknown') {stack.push(language);}\n\n // Notable frameworks (frontend / backend / database / build)\n const notableCategories = new Set(['frontend', 'backend', 'database', 'build', 'css', 'state', 'monorepo']);\n for (const fw of frameworks) {\n if (notableCategories.has(fw.category)) {\n stack.push(fw.name);\n }\n }\n\n // Runtime if non-trivial (Node.js by default for JS — only call out Bun/Deno/etc.)\n if (repoExists(dir, 'bunfig.toml')) {stack.push('Bun');}\n else if (repoExists(dir, 'deno.json') || repoExists(dir, 'deno.jsonc')) {stack.push('Deno');}\n\n // Top deps from package.json/Cargo.toml — only if stack is still sparse\n if (stack.length < 3 && pkg?.dependencies) {\n const topDeps = Object.keys(pkg.dependencies).slice(0, 5);\n for (const dep of topDeps) {\n if (!stack.some(s => s.toLowerCase().includes(dep.toLowerCase()))) {\n stack.push(dep);\n }\n }\n }\n\n return stack;\n}\n",
115
115
  "import type { FrameworkSignature } from '../core/types.js';\n\n/** Data-driven framework signatures — one scanner evaluates all */\nexport const FRAMEWORKS: FrameworkSignature[] = [\n // Frontend Frameworks\n { name: 'Next.js', slug: 'nextjs', category: 'frontend', signals: [\n { type: 'dependency', key: 'next' },\n { type: 'file', pattern: 'next.config.*' },\n ]},\n { name: 'React', slug: 'react', category: 'frontend', signals: [\n { type: 'dependency', key: 'react' },\n ]},\n // SvelteKit apps list the kit as a devDependency, and SvelteKit 3 has no\n // svelte.config.js, so the kit in either place is the signal.\n { name: 'SvelteKit', slug: 'sveltekit', category: 'frontend', signals: [\n { type: 'anyDependency', key: '@sveltejs/kit' },\n { type: 'file', pattern: 'svelte.config.*' },\n ]},\n { name: 'Svelte', slug: 'svelte', category: 'frontend', signals: [\n { type: 'dependency', key: 'svelte' },\n { type: 'devDependency', key: 'svelte' },\n ]},\n { name: 'Vue.js', slug: 'vue', category: 'frontend', signals: [\n { type: 'dependency', key: 'vue' },\n ]},\n { name: 'Nuxt', slug: 'nuxt', category: 'frontend', signals: [\n { type: 'dependency', key: 'nuxt' },\n { type: 'file', pattern: 'nuxt.config.*' },\n ]},\n { name: 'Angular', slug: 'angular', category: 'frontend', signals: [\n { type: 'dependency', key: '@angular/core' },\n { type: 'file', pattern: 'angular.json' },\n ]},\n { name: 'Astro', slug: 'astro', category: 'frontend', signals: [\n { type: 'dependency', key: 'astro' },\n { type: 'file', pattern: 'astro.config.*' },\n ]},\n { name: 'Solid', slug: 'solid', category: 'frontend', signals: [\n { type: 'dependency', key: 'solid-js' },\n ]},\n { name: 'Remix', slug: 'remix', category: 'frontend', signals: [\n { type: 'dependency', key: '@remix-run/react' },\n ]},\n { name: 'Gatsby', slug: 'gatsby', category: 'frontend', signals: [\n { type: 'dependency', key: 'gatsby' },\n { type: 'file', pattern: 'gatsby-config.*' },\n ]},\n { name: 'Qwik', slug: 'qwik', category: 'frontend', signals: [\n { type: 'dependency', key: '@builder.io/qwik' },\n ]},\n\n // SvelteKit Adapters (hosting signal)\n { name: 'Vercel (SvelteKit)', slug: 'adapter-vercel', category: 'hosting', signals: [\n { type: 'dependency', key: '@sveltejs/adapter-vercel' },\n { type: 'devDependency', key: '@sveltejs/adapter-vercel' },\n ]},\n { name: 'Node (SvelteKit)', slug: 'adapter-node', category: 'hosting', signals: [\n { type: 'dependency', key: '@sveltejs/adapter-node' },\n { type: 'devDependency', key: '@sveltejs/adapter-node' },\n ]},\n { name: 'Static (SvelteKit)', slug: 'adapter-static', category: 'hosting', signals: [\n { type: 'dependency', key: '@sveltejs/adapter-static' },\n { type: 'devDependency', key: '@sveltejs/adapter-static' },\n ]},\n { name: 'Cloudflare (SvelteKit)', slug: 'adapter-cloudflare', category: 'hosting', signals: [\n { type: 'dependency', key: '@sveltejs/adapter-cloudflare' },\n { type: 'devDependency', key: '@sveltejs/adapter-cloudflare' },\n ]},\n { name: 'Netlify (SvelteKit)', slug: 'adapter-netlify', category: 'hosting', signals: [\n { type: 'dependency', key: '@sveltejs/adapter-netlify' },\n { type: 'devDependency', key: '@sveltejs/adapter-netlify' },\n ]},\n\n // CSS Frameworks\n { name: 'Tailwind CSS', slug: 'tailwind', category: 'css', signals: [\n { type: 'dependency', key: 'tailwindcss' },\n { type: 'devDependency', key: 'tailwindcss' },\n { type: 'file', pattern: 'tailwind.config.*' },\n ]},\n { name: 'Bootstrap', slug: 'bootstrap', category: 'css', signals: [\n { type: 'dependency', key: 'bootstrap' },\n ]},\n { name: 'Styled Components', slug: 'styled-components', category: 'css', signals: [\n { type: 'dependency', key: 'styled-components' },\n ]},\n\n // UI Libraries\n { name: 'shadcn/ui', slug: 'shadcn', category: 'ui', signals: [\n { type: 'file', pattern: 'components.json' },\n { type: 'dependency', key: '@radix-ui/react-dialog' },\n ]},\n { name: 'Material UI', slug: 'mui', category: 'ui', signals: [\n { type: 'dependency', key: '@mui/material' },\n ]},\n { name: 'Chakra UI', slug: 'chakra', category: 'ui', signals: [\n { type: 'dependency', key: '@chakra-ui/react' },\n ]},\n { name: 'Ant Design', slug: 'antd', category: 'ui', signals: [\n { type: 'dependency', key: 'antd' },\n ]},\n\n // State Management\n { name: 'Redux', slug: 'redux', category: 'state', signals: [\n { type: 'dependency', key: '@reduxjs/toolkit' },\n ]},\n { name: 'Zustand', slug: 'zustand', category: 'state', signals: [\n { type: 'dependency', key: 'zustand' },\n ]},\n { name: 'Jotai', slug: 'jotai', category: 'state', signals: [\n { type: 'dependency', key: 'jotai' },\n ]},\n { name: 'Pinia', slug: 'pinia', category: 'state', signals: [\n { type: 'dependency', key: 'pinia' },\n ]},\n\n // Backend Frameworks\n { name: 'Express', slug: 'express', category: 'backend', signals: [\n { type: 'dependency', key: 'express' },\n ]},\n { name: 'Fastify', slug: 'fastify', category: 'backend', signals: [\n { type: 'dependency', key: 'fastify' },\n ]},\n { name: 'Hono', slug: 'hono', category: 'backend', signals: [\n { type: 'dependency', key: 'hono' },\n ]},\n { name: 'Elysia', slug: 'elysia', category: 'backend', signals: [\n { type: 'dependency', key: 'elysia' },\n ]},\n { name: 'NestJS', slug: 'nestjs', category: 'backend', signals: [\n { type: 'dependency', key: '@nestjs/core' },\n ]},\n { name: 'Koa', slug: 'koa', category: 'backend', signals: [\n { type: 'dependency', key: 'koa' },\n ]},\n { name: 'Django', slug: 'django', category: 'backend', signals: [\n { type: 'file', pattern: 'manage.py' },\n { type: 'file', pattern: 'settings.py' },\n ]},\n // Content-aware — app.py/main.py alone ≠ Flask/FastAPI (generic entry-point\n // filenames; same false-positive shape as the Rails/Spring/Vapor kill lines\n // below). Verified live: gemini-faf-mcp's main.py is a Cloud Functions\n // entry point (functions-framework), not FastAPI — bare-file detection\n // misclassified it before this fix.\n { name: 'Flask', slug: 'flask', category: 'backend', signals: [\n { type: 'content', pattern: 'app.py', key: 'flask' },\n ]},\n { name: 'FastAPI', slug: 'fastapi', category: 'backend', signals: [\n { type: 'content', pattern: 'main.py', key: 'fastapi' },\n ]},\n // Content-aware — Gemfile alone ≠ Rails (Ruby Edition kill line).\n { name: 'Rails', slug: 'rails', category: 'backend', signals: [\n { type: 'content', pattern: 'Gemfile', key: 'rails' },\n { type: 'content', pattern: 'Gemfile.lock', key: 'rails (' },\n { type: 'file', pattern: 'config/application.rb' },\n { type: 'file', pattern: 'config/routes.rb' },\n ]},\n // Content-aware — pom.xml / build.gradle alone ≠ Spring Boot (JVM Edition kill line).\n // `content` signals require the needle in the file body (see matchSignal).\n { name: 'Spring Boot', slug: 'spring', category: 'backend', signals: [\n { type: 'content', pattern: 'pom.xml', key: 'spring-boot' },\n { type: 'content', pattern: 'build.gradle', key: 'springframework.boot' },\n { type: 'content', pattern: 'build.gradle.kts', key: 'springframework.boot' },\n { type: 'content', pattern: 'gradle/libs.versions.toml', key: 'springframework.boot' },\n ]},\n // Content-aware — Package.swift alone ≠ app / Vapor (Swift Edition kill line).\n { name: 'Vapor', slug: 'vapor', category: 'backend', signals: [\n { type: 'content', pattern: 'Package.swift', key: 'vapor/vapor' },\n { type: 'content', pattern: 'Package.swift', key: 'product(name: \"Vapor\"' },\n { type: 'content', pattern: 'Package.swift', key: \"product(name: 'Vapor'\" },\n { type: 'file', pattern: 'Sources/App/configure.swift' },\n ]},\n { name: 'Hummingbird', slug: 'hummingbird', category: 'backend', signals: [\n { type: 'content', pattern: 'Package.swift', key: 'hummingbird-project/hummingbird' },\n { type: 'content', pattern: 'Package.swift', key: 'product(name: \"Hummingbird\"' },\n { type: 'content', pattern: 'Package.swift', key: \"product(name: 'Hummingbird'\" },\n ]},\n\n // Databases\n { name: 'Prisma', slug: 'prisma', category: 'database', signals: [\n { type: 'dependency', key: 'prisma' },\n { type: 'devDependency', key: 'prisma' },\n { type: 'file', pattern: 'prisma/schema.prisma' },\n ]},\n { name: 'Drizzle', slug: 'drizzle', category: 'database', signals: [\n { type: 'dependency', key: 'drizzle-orm' },\n { type: 'file', pattern: 'drizzle.config.*' },\n ]},\n { name: 'TypeORM', slug: 'typeorm', category: 'database', signals: [\n { type: 'dependency', key: 'typeorm' },\n ]},\n { name: 'Mongoose', slug: 'mongoose', category: 'database', signals: [\n { type: 'dependency', key: 'mongoose' },\n ]},\n\n // Build Tools\n { name: 'Vite', slug: 'vite', category: 'build', signals: [\n { type: 'dependency', key: 'vite' },\n { type: 'devDependency', key: 'vite' },\n { type: 'file', pattern: 'vite.config.*' },\n ]},\n { name: 'webpack', slug: 'webpack', category: 'build', signals: [\n { type: 'dependency', key: 'webpack' },\n { type: 'devDependency', key: 'webpack' },\n { type: 'file', pattern: 'webpack.config.*' },\n ]},\n { name: 'esbuild', slug: 'esbuild', category: 'build', signals: [\n { type: 'dependency', key: 'esbuild' },\n { type: 'devDependency', key: 'esbuild' },\n ]},\n { name: 'Turbopack', slug: 'turbopack', category: 'build', signals: [\n { type: 'file', pattern: 'turbo.json' },\n ]},\n\n // Testing\n { name: 'Jest', slug: 'jest', category: 'testing', signals: [\n { type: 'devDependency', key: 'jest' },\n { type: 'file', pattern: 'jest.config.*' },\n ]},\n { name: 'Vitest', slug: 'vitest', category: 'testing', signals: [\n { type: 'devDependency', key: 'vitest' },\n ]},\n { name: 'Playwright', slug: 'playwright', category: 'testing', signals: [\n { type: 'devDependency', key: '@playwright/test' },\n { type: 'file', pattern: 'playwright.config.*' },\n ]},\n { name: 'Cypress', slug: 'cypress', category: 'testing', signals: [\n { type: 'devDependency', key: 'cypress' },\n { type: 'file', pattern: 'cypress.config.*' },\n ]},\n\n // Monorepo Tools\n { name: 'Turborepo', slug: 'turborepo', category: 'monorepo', signals: [\n { type: 'devDependency', key: 'turbo' },\n { type: 'file', pattern: 'turbo.json' },\n ]},\n { name: 'Nx', slug: 'nx', category: 'monorepo', signals: [\n { type: 'devDependency', key: 'nx' },\n { type: 'file', pattern: 'nx.json' },\n ]},\n { name: 'Lerna', slug: 'lerna', category: 'monorepo', signals: [\n { type: 'devDependency', key: 'lerna' },\n { type: 'file', pattern: 'lerna.json' },\n ]},\n\n // MCP / AI\n { name: 'MCP SDK', slug: 'mcp', category: 'ai', signals: [\n { type: 'dependency', key: '@modelcontextprotocol/sdk' },\n ]},\n { name: 'Anthropic SDK', slug: 'anthropic', category: 'ai', signals: [\n { type: 'dependency', key: '@anthropic-ai/sdk' },\n ]},\n { name: 'OpenAI SDK', slug: 'openai', category: 'ai', signals: [\n { type: 'dependency', key: 'openai' },\n ]},\n { name: 'LangChain', slug: 'langchain', category: 'ai', signals: [\n { type: 'dependency', key: 'langchain' },\n ]},\n\n // Hosting / Deploy\n { name: 'Vercel', slug: 'vercel', category: 'hosting', signals: [\n { type: 'file', pattern: 'vercel.json' },\n ]},\n { name: 'Netlify', slug: 'netlify', category: 'hosting', signals: [\n { type: 'file', pattern: 'netlify.toml' },\n ]},\n { name: 'Docker', slug: 'docker', category: 'hosting', signals: [\n { type: 'file', pattern: 'Dockerfile' },\n { type: 'file', pattern: 'docker-compose.yml' },\n ]},\n { name: 'Cloudflare Workers', slug: 'cloudflare', category: 'hosting', signals: [\n { type: 'file', pattern: 'wrangler.toml' },\n { type: 'dependency', key: 'wrangler' },\n ]},\n\n // CI/CD\n { name: 'GitHub Actions', slug: 'github-actions', category: 'cicd', signals: [\n { type: 'file', pattern: '.github/workflows/*.yml' },\n ]},\n\n // Commander (CLI indicator)\n { name: 'Commander.js', slug: 'commander', category: 'cli', signals: [\n { type: 'dependency', key: 'commander' },\n ]},\n];\n",
116
116
  "import type { FafData, SlotDef } from '../core/types.js';\nimport { SLOTS, appTypeUsesSlot } from '../core/slots.js';\nimport { FAF_VERSION } from '../core/version.js';\nimport {\n detectFrameworks,\n detectLanguage,\n detectPolyglotLanguage,\n detectSubdirStacks,\n detectProjectTypeWithRationale,\n detectRuntime,\n detectPackageManager,\n detectCicd,\n detectHosting,\n detectBuildTool,\n detectSvelteAdapter,\n readPackageJson,\n detectKeyFiles,\n detectCommands,\n detectTechStack,\n viteLabel,\n} from './scanner.js';\n\n/** The major version of the `svelte` dependency package.json names\n * (`^5.0.0` → 5), or NaN when it names none or no number. */\nfunction svelteMajor(pkg: ReturnType<typeof readPackageJson>): number {\n const range = pkg?.dependencies?.svelte ?? pkg?.devDependencies?.svelte;\n const major = typeof range === 'string' ? /\\d+/.exec(range)?.[0] : undefined;\n return major === undefined ? NaN : Number(major);\n}\n\n/** Detect the project stack from repo facts and build .faf data. A slot with\n * no evidence is left empty (`''`) — never a default. */\nexport function detectStack(dir: string): FafData {\n return detectStackWithFacts(dir).data;\n}\n\n/**\n * {@link detectStack}'s data, and `facts`: the repo's fact for every stack\n * slot (by field — `runtime`, `database`), whatever the app-type — `''` when\n * the repo shows none. detectStack marks a slot its detected type leaves out\n * `slotignored`; `faf auto` fills such a slot from `facts` when the file's own\n * type uses it (a `backend` project whose repo reads as a CLI still gets\n * `runtime: Go` from go.mod).\n */\nexport function detectStackWithFacts(dir: string): { data: FafData; facts: Record<string, string> } {\n const pkg = readPackageJson(dir);\n const frameworks = detectFrameworks(dir);\n const detection = detectProjectTypeWithRationale(dir);\n const projectType = detection.type;\n // Polyglot repos (real stack in sibling dirs) get an aggregated language\n // string instead of the misleading root-only detectLanguage() fallback.\n const isPolyglot = detection.found.some(f => f.startsWith('polyglot:'));\n const language = (isPolyglot && detectPolyglotLanguage(dir)) || detectLanguage(dir);\n const runtime = detectRuntime(dir);\n const pkgManager = detectPackageManager(dir);\n const cicd = detectCicd(dir);\n const hosting = detectHosting(dir);\n const buildTool = detectBuildTool(dir);\n\n // Find specific frameworks by category\n // A project with the kit is a SvelteKit project, whatever plain Svelte scores.\n const frontendFw = frameworks.find(f => f.slug === 'sveltekit') ?? frameworks.find(f => f.category === 'frontend');\n const cssFw = frameworks.find(f => f.category === 'css');\n const uiFw = frameworks.find(f => f.category === 'ui');\n const stateFw = frameworks.find(f => f.category === 'state');\n const backendFw = frameworks.find(f => f.category === 'backend');\n const dbFw = frameworks.find(f => f.category === 'database');\n\n // Which slots the app-type uses (an unknown type reads as library)\n const uses = (slot: SlotDef): boolean => appTypeUsesSlot(projectType, slot) ?? appTypeUsesSlot('library', slot) === true;\n\n // Framework sub-type detection (framework → svelte, framework → nextjs, etc.)\n const isFramework = projectType === 'framework';\n const hasSvelteSignal = frameworks.some(f => f.slug === 'svelte' || f.slug === 'sveltekit');\n const frameworkSubType = isFramework && hasSvelteSignal ? 'svelte' : (isFramework ? null : null);\n\n // Svelte-aware: fires for svelte apps AND framework→svelte repos\n const isSvelte = projectType === 'svelte' || frameworkSubType === 'svelte';\n const svelteAdapter = isSvelte ? detectSvelteAdapter(dir) : null;\n const hasSvelteKit = isSvelte && frameworks.some(f => f.slug === 'sveltekit');\n\n // The repo's fact for each stack slot, whatever the app-type ('' when none).\n const facts: Record<string, string> = {};\n const stackSlots = SLOTS.filter(s => s.path.startsWith('stack.'));\n\n for (const slot of stackSlots) {\n const field = slot.path.replace('stack.', '');\n // Detected values (Svelte-aware overrides applied inline)\n switch (field) {\n case 'frontend': facts[field] = frontendFw?.name ?? ''; break;\n case 'css_framework': facts[field] = cssFw?.name ?? ''; break;\n case 'ui_library': facts[field] = uiFw?.name ?? ''; break;\n case 'state_management':\n // Svelte 5 uses Runes — no external state library needed. Only when\n // package.json says Svelte 5 or later: Svelte 4 has no Runes.\n facts[field] = stateFw?.name ?? (isSvelte && svelteMajor(pkg) >= 5 ? 'Runes' : '');\n break;\n case 'backend':\n // SvelteKit IS the backend (server routes, form actions, hooks)\n facts[field] = isSvelte ? (hasSvelteKit ? 'SvelteKit' : (backendFw?.name ?? '')) : (backendFw?.name ?? '');\n break;\n case 'api_type':\n // SvelteKit uses form actions + server routes\n facts[field] = hasSvelteKit ? 'Server Routes' : '';\n break;\n case 'runtime': facts[field] = runtime; break;\n case 'database':\n // Only populate if ORM actually detected\n facts[field] = dbFw?.name ?? '';\n break;\n case 'connection':\n facts[field] = dbFw?.name ?? '';\n break;\n case 'hosting':\n // Svelte adapter → hosting platform (adapter-vercel = Vercel, etc.)\n if (isSvelte && svelteAdapter) {\n facts[field] = svelteAdapter;\n } else {\n facts[field] = hosting ?? '';\n }\n break;\n case 'build':\n // SvelteKit always builds with Vite; plain Svelte only when the repo says so\n facts[field] = hasSvelteKit ? viteLabel(pkg) : (buildTool ?? '');\n break;\n case 'cicd': facts[field] = cicd ?? ''; break;\n case 'package_manager': facts[field] = pkgManager; break;\n default: facts[field] = ''; break;\n }\n }\n\n // Build stack with slotignored for the slots the app-type leaves out\n // (a framework repo also leaves out the slots framework source code never\n // has — see appTypeUsesSlot)\n const stack: Record<string, string> = {};\n for (const slot of stackSlots) {\n const field = slot.path.replace('stack.', '');\n stack[field] = uses(slot) ? facts[field] : 'slotignored';\n }\n\n // Build monorepo section\n const monorepo: Record<string, string> = {};\n const monorepoSlots = SLOTS.filter(s => s.path.startsWith('monorepo.'));\n for (const slot of monorepoSlots) {\n const field = slot.path.replace('monorepo.', '');\n if (!uses(slot)) {\n monorepo[field] = 'slotignored';\n } else {\n monorepo[field] = '';\n }\n }\n\n // Build project section\n const project: Record<string, string> = {\n name: pkg?.name ?? dir.split('/').pop() ?? 'project',\n // A polyglot repo's root package.json describes the tooling shell, not the\n // product — leave goal for the README interrogator / the human to fill.\n goal: isPolyglot ? '' : (pkg?.description ?? ''),\n main_language: language,\n type: projectType,\n };\n if (isFramework && frameworkSubType) {\n project.framework = frameworkSubType;\n }\n\n // Canonical FAFb v2 chunks (read by faf-fafb compile).\n // Without these keys the brick still compiles, but only from whatever\n // other canonical fields are present. Per v6.6.md + faf-auto-no-guess-no-slop:\n // tech_stack/key_files/commands auto-populate from observable signals;\n // architecture/context stay empty (user fill — architecture overlaps with\n // human_context.how, context is free-form additional signal).\n // Feed detectTechStack the ROOT language (a single token), never the polyglot\n // summary string — that belongs only in project.main_language.\n const techStack = detectTechStack(dir, pkg, frameworks, isPolyglot ? detectLanguage(dir) : language);\n if (isPolyglot) {\n // Add each sibling component's language + top framework (deduped, order-stable).\n for (const s of detectSubdirStacks(dir)) {\n for (const t of [s.language, s.topFramework]) {\n if (t && !techStack.includes(t)) {techStack.push(t);}\n }\n }\n }\n const keyFiles = detectKeyFiles(dir);\n const commands = detectCommands(dir, pkg);\n\n const result: FafData = {\n faf_version: FAF_VERSION,\n project,\n stack,\n human_context: {\n who: '',\n // A polyglot root's package.json describes the tooling shell, not the\n // product — leave `what` for the README interrogator / the human.\n what: isPolyglot ? '' : (pkg?.description ?? ''),\n why: '',\n where: '',\n when: '',\n how: '',\n },\n monorepo,\n // Runtime-only meta. Stripped before YAML serialization by writeFaf,\n // which uses _meta.found to inject `# found: <list>` next to `type:`.\n // Glass Hood doctrine — the user sees WHY the cli classified as it did.\n _meta: { found: detection.found },\n };\n\n // Only emit FAFB top-level keys if non-empty (no slop / empty-list pollution)\n if (techStack.length > 0) {result.tech_stack = techStack;}\n if (keyFiles.length > 0) {result.key_files = keyFiles;}\n if (Object.keys(commands).length > 0) {result.commands = commands;}\n\n return { data: result, facts };\n}\n",
@@ -126,7 +126,7 @@
126
126
  "/**\n * The pure parts of `faf git` — no git, no network, no child process.\n *\n * `faf git <url>` validates the URL, clones the repo into a temp folder, and\n * authors a fresh .faf from it with the same pipeline `faf auto` runs. The\n * clone is the only step that runs git, and it stays in the CLI command. The\n * rest lives here so consumers (claude-faf-mcp's faf_git, faf-mcp) compose it:\n * they fetch the repo their own way, then call `authorFafFromRepo(dir)` and get\n * the same .faf `faf git` would write — canonical keys, scored by faf's own\n * scorer — instead of a hand-rolled extractor with its own schema.\n */\n\nimport type { FafData } from '../core/types.js';\nimport { assembleFreshFaf } from './assemble.js';\nimport { readPackageJson } from './scanner.js';\n\n/**\n * Validate + normalize a GitHub repo reference into a safe clone URL.\n *\n * A `faf git` URL is an untrusted CLI/MCP argument. This gate rejects any\n * shell metacharacter or whitespace, and only ever returns a URL built from a\n * strict allowlist pattern — defense in depth alongside the no-shell\n * `execFileSync` clone (which already makes argument injection structurally\n * impossible). Nothing carrying a metacharacter or control char ever reaches\n * `git`: metachars are caught here; anything else fails the allowlist below.\n *\n * Accepts:\n * owner/repo · github.com/owner/repo · https://github.com/owner/repo\n * (optional `.git` suffix, optional trailing slash; full http(s) URLs to\n * any host pass through with a single `.git` suffix)\n *\n * Throws on empty / malformed / unsafe input.\n */\nexport function normalizeGitUrl(input: string): string {\n const url = (input ?? '').trim();\n if (!url) {\n throw new Error('Please provide a GitHub URL.');\n }\n // Reject shell metacharacters and whitespace up front for a clear error.\n if (/[\\s;&|`$(){}<>\\\\^'\"!*?[\\]]/.test(url)) {\n throw new Error(`Refusing unsafe URL: ${JSON.stringify(input)}`);\n }\n\n const bare = url.replace(/\\/+$/, '').replace(/\\.git$/i, '');\n\n // owner/repo shorthand (optionally github.com-prefixed, no scheme) → canonical https\n const short = bare.match(\n /^(?:github\\.com\\/)?([A-Za-z0-9][A-Za-z0-9._-]*)\\/([A-Za-z0-9][A-Za-z0-9._-]*)$/,\n );\n if (short) {\n return `https://github.com/${short[1]}/${short[2]}.git`;\n }\n\n // full http(s) URL → ensure exactly one `.git` suffix (strict allowlist chars)\n if (/^https?:\\/\\/[A-Za-z0-9._\\-/:@~%]+$/.test(bare)) {\n return `${bare}.git`;\n }\n\n throw new Error(`Not a recognized GitHub repo URL: ${JSON.stringify(input)}`);\n}\n\n/** The repo name from a normalized clone URL: .../owner/repo.git → repo. */\nexport function repoNameFromUrl(repoUrl: string): string {\n return repoUrl.replace(/\\.git$/i, '').replace(/\\/+$/, '').split('/').pop() || 'project';\n}\n\nexport interface AuthorFafFromRepoOptions {\n /** The repo's URL (a clone URL, or any form `normalizeGitUrl` accepts).\n * When the fetched folder gives the project no name of its own (no\n * package.json name), the project is named after the repo instead of the\n * folder it was fetched into. */\n repoUrl?: string;\n}\n\n/**\n * Author a fresh .faf, as data, from a repo that is already on disk — the\n * function form of `faf git`. Pass the folder you cloned or unpacked the repo\n * into. Runs the full `faf auto` pipeline (detect → interrogate → slotignore →\n * Turbo-Cat → Relentless) on that folder only, and returns the FafData —\n * nothing is written, nothing is fetched, no git is run.\n *\n * Write it with `writeFaf` and score the written text with `scoreFafYaml`, so\n * the score you report is the one faf reports.\n */\nexport function authorFafFromRepo(dir: string, opts: AuthorFafFromRepoOptions = {}): FafData {\n const data = assembleFreshFaf(dir) as FafData;\n // Name the project after the REPO, not the folder it was fetched into — but\n // only when the name IS that folder fallback (detectStack's\n // `pkg.name ?? dir.split('/').pop()`); a real package.json name is kept.\n if (opts.repoUrl && data.project && !readPackageJson(dir)?.name && data.project.name === dir.split('/').pop()) {\n data.project.name = repoNameFromUrl(opts.repoUrl);\n }\n return data;\n}\n",
127
127
  "/**\n * FAF DNA — the lifecycle of AI context. The \"first heartbeat\".\n *\n * Every project.faf gets a `.faf-dna` lineage record (separate file, NOT\n * embedded in the .faf — so it's compatible with the clean dialect):\n * - Birth Certificate: the honest first score (even 0%) — the \"before\" picture\n * - Growth Record: version history as the score improves\n * - Journey: the one-line story, e.g. \"22% → 85% → 99% ← 92%\"\n *\n * Birth DNA = the raw slot-based score at init. The growth from Birth DNA to\n * the current score is the demonstrated value of FAF.\n *\n * Restored 2026-05-21 — silently dropped in the v6.0 clean-architecture rewrite\n * (it was never knowingly removed). Ported from v5 (sync, v6-native, load-compatible).\n *\n * Other shapes. `.faf-dna` is committed lineage, and other tools have written\n * it in their own shape (claude-faf-mcp's faf_dna wrote `milestones` at the top\n * level and no `versions` or `growth`). Reading never throws on such a file: it\n * reads what it can, and missing parts are derived from what is there. Writing\n * is different: recordGrowth rewrites the file only when faf can prove it wrote\n * every byte — the file is in faf's shape AND its text is exactly faf's own\n * serialisation of what it holds (`JSON.stringify(data, null, 2)` and a final\n * newline), and nothing faf would replace carries a note of the user's. Hand\n * formatting, CRLF, reordered keys, a repeated key or a number JSON cannot hold\n * exactly (a 20-digit id) would all be lost in a rewrite, so such a file — like\n * one in another shape — is read and left exactly as it is, and\n * `readOnlyReason()` says why in one line. `faf init --force` starts a fresh\n * lineage when you ask it to.\n */\n\nimport { existsSync, lstatSync } from 'fs';\nimport { join, basename } from 'path';\nimport { createHash } from 'crypto';\nimport { readBytesIfPresent, readUtf8, resolveInside, safeWriteFile } from './safe-write.js';\n\nexport interface BirthCertificate {\n born: string; // ISO timestamp\n birthDNA: number; // honest first score (raw slot-based, even 0)\n birthDNASource: 'init' | 'legacy';\n projectDNA: string; // 16-char hash of initial state\n certificate: string; // FAF-YYYY-PROJECT-XXXX\n}\n\nexport interface VersionEntry {\n version: string; // v1.0.0, v1.0.1, …\n timestamp: string; // ISO\n score: number;\n changes: string[];\n growth: number; // points above Birth DNA\n}\n\n/** Journey markers only — not score tiers.\n * Tiers live solely in tiers.ts (Trophy 100 · Gold 99 · Silver 95 · Bronze 85 · …).\n * There is no championship / elite / perfect milestone. */\nexport interface Milestone {\n type: 'birth' | 'doubled' | 'peak' | 'current';\n score: number;\n date: string; // ISO\n version: string;\n label: string;\n emoji: string;\n}\n\n/**\n * A lineage a reset ended. `faf init --force` starts a fresh certificate, and\n * the life before it is kept here rather than erased — a birth score is the one\n * value in this format that cannot be recreated, so a reset is a REBIRTH, not a\n * deletion. Chains: a project reset twice keeps both earlier lives, oldest first.\n */\nexport interface PriorLineage {\n born: string; // ISO — when that life started\n birthDNA: number; // its honest first score\n certificate: string; // FAF-YYYY-PROJECT-XXXX\n projectDNA: string;\n lastScore: number; // where it had reached when the reset ended it\n endedAt: string; // ISO — when the reset happened\n}\n\nexport interface FafDNA {\n birthCertificate: BirthCertificate;\n versions: VersionEntry[];\n current: { version: string; score: number; lastSync: string };\n growth: { totalGrowth: number; daysActive: number; milestones: Milestone[] };\n lastModified: string;\n format: 'faf-dna-v1';\n /** Lives ended by a reset, oldest first. Absent when there has never been one. */\n priorLineage?: PriorLineage[];\n}\n\ntype Json = Record<string, unknown>;\n\nconst isObject = (v: unknown): v is Json => typeof v === 'object' && v !== null && !Array.isArray(v);\nconst isNum = (v: unknown): v is number => typeof v === 'number' && Number.isFinite(v);\nconst isStr = (v: unknown): v is string => typeof v === 'string';\nconst VERSION_RE = /^v?\\d+\\.\\d+\\.\\d+$/;\nconst MILESTONE_TYPES = new Set(['birth', 'doubled', 'peak', 'current']);\n\n/** A version entry faf wrote: a semver-ish version and a numeric score. */\nfunction isVersionEntry(v: unknown): v is VersionEntry {\n return isObject(v) && isStr(v.version) && VERSION_RE.test(v.version) && isNum(v.score);\n}\n\n/**\n * True when `raw` is a `.faf-dna` in the shape faf writes: a birth certificate\n * with a birth date and a numeric Birth DNA, a non-empty `versions` list whose\n * entries carry a version and a score, a `current` score and version, and a\n * `growth.milestones` list of entries. Only such a file is ever added to\n * (unknown extra keys in it are kept).\n */\n/**\n * The honest first score, whatever the file calls it. faf has written it as\n * `birthDNA` since 2026-05-21 (fa8dec45); every `.faf-dna` born between\n * 2025-09-20 and that date carries `birthWeight` instead — and BOTH declare\n * `format: 'faf-dna-v1'`, so the version string cannot tell them apart. Such a\n * file is read, never migrated: a birth score is the one value in this format\n * that cannot be recreated, so faf does not rewrite the file to rename a field.\n */\nconst birthScore = (bc: Json): number | null =>\n isNum(bc.birthDNA) ? bc.birthDNA : (isNum(bc.birthWeight) ? bc.birthWeight : null);\n\nconst birthOk = (bc: unknown): boolean => isObject(bc) && isNum(bc.birthDNA) && isStr(bc.born);\nconst isPriorLineage = (v: unknown): v is PriorLineage =>\n isObject(v) && isStr(v.born) && isNum(v.birthDNA) && isNum(v.lastScore) && isStr(v.endedAt);\n\nconst versionsOk = (v: unknown): boolean => Array.isArray(v) && v.length > 0 && v.every(isVersionEntry);\nconst currentOk = (c: unknown): boolean => isObject(c) && isNum(c.score) && isStr(c.version);\nconst growthOk = (g: unknown): boolean => isObject(g) && Array.isArray(g.milestones) && g.milestones.every(isObject);\n\nfunction hasFafShape(raw: unknown): raw is FafDNA {\n return isObject(raw) && birthOk(raw.birthCertificate) && versionsOk(raw.versions) && currentOk(raw.current) && growthOk(raw.growth);\n}\n\n/** True when something is at `path` — a file, or a link (even a dangling one). */\nfunction present(path: string): boolean {\n try {\n lstatSync(path);\n return true;\n } catch {\n return false;\n }\n}\n\n/** faf's own serialisation of a `.faf-dna` — the exact text save() writes. */\nconst serialise = (dna: unknown): string => `${JSON.stringify(dna, null, 2)}\\n`;\n\n/** What faf writes in `current` and in a milestone. recordGrowth replaces\n * `current` and the peak / current milestones whole, so a key of the user's\n * in one of them would be lost. */\nconst CURRENT_KEYS = new Set(['version', 'score', 'lastSync']);\nconst MILESTONE_KEYS = new Set(['type', 'score', 'date', 'version', 'label', 'emoji']);\nconst onlyKeys = (o: object, keys: Set<string>): boolean => Object.keys(o).every((k) => keys.has(k));\n\n/** The label and emoji faf gives each milestone it writes. */\nconst MILESTONE_TEXT: Record<Milestone['type'], { label: string; emoji: string }> = {\n birth: { label: 'Birth', emoji: '🐣' },\n doubled: { label: 'Doubled', emoji: '2️⃣' },\n peak: { label: 'Peak', emoji: '🏔️' },\n current: { label: 'Current', emoji: '📍' },\n};\n\n/** The milestones recordGrowth replaces: the peak and the current one. */\nconst replaced = (dna: FafDNA): Milestone[] => dna.growth.milestones.filter((m) => m.type === 'peak' || m.type === 'current');\n\n/** True when every object recordGrowth replaces holds only keys faf writes there. */\nconst onlyFafKeys = (dna: FafDNA): boolean =>\n onlyKeys(dna.current, CURRENT_KEYS) && replaced(dna).every((m) => onlyKeys(m, MILESTONE_KEYS));\n\n/** True when the peak and current milestones carry faf's own label and emoji\n * for their type — a relabelled one is the user's text. */\nconst fafLabels = (dna: FafDNA): boolean =>\n replaced(dna).every((m) => m.label === MILESTONE_TEXT[m.type].label && m.emoji === MILESTONE_TEXT[m.type].emoji);\n\n/** True when every object recordGrowth replaces is exactly what faf writes there. */\nfunction growthLosesNothing(dna: FafDNA): boolean {\n return onlyFafKeys(dna) && fafLabels(dna);\n}\n\n/** Why faf leaves a `.faf-dna` as it is, in one line. */\nconst NOT_FAF_SHAPE = \".faf-dna is not in faf's shape: faf reads it and leaves it as it is.\";\nconst NOT_FAF_TEXT =\n '.faf-dna is not exactly as faf wrote it (hand formatting, key order, a repeated key or a number JSON cannot hold exactly): faf reads it and leaves it as it is.';\nconst USER_NOTE =\n '.faf-dna has a key of yours in an entry faf would replace (current, or the peak or current milestone): faf reads it and leaves it as it is.';\nconst USER_LABEL =\n '.faf-dna has a label or emoji of yours on a milestone faf would replace (the peak or current one): faf reads it and leaves it as it is.';\nconst NO_BIRTH = '.faf-dna has no birth certificate faf can read: faf leaves it as it is.';\n\n/** Milestones as the journey reads them: well-formed entries only. */\nfunction readMilestones(v: unknown): Milestone[] {\n if (!Array.isArray(v)) {return [];}\n return v.filter((m): m is Milestone => isObject(m) && isStr(m.type) && MILESTONE_TYPES.has(m.type) && isNum(m.score));\n}\n\n/**\n * A readable view of a `.faf-dna` in any shape, or null when there is no usable\n * birth certificate (no numeric Birth DNA). Missing parts are derived from what\n * is there — `growth.milestones` falls back to a top-level `milestones`, the\n * current score to the last version or the Birth DNA — so the journey reads\n * without throwing. The view is for reading; it is never written back.\n */\nconst str = (v: unknown, fallback = ''): string => (isStr(v) ? v : fallback);\n\n/** Well-formed version entries, each with every field the log reads. */\nfunction readVersions(v: unknown, birthDNA: number): VersionEntry[] {\n if (!Array.isArray(v)) {return [];}\n return v.filter(isVersionEntry).map((e) => ({\n version: e.version,\n timestamp: str(e.timestamp),\n score: e.score,\n changes: Array.isArray(e.changes) ? e.changes.filter(isStr) : [],\n growth: isNum(e.growth) ? e.growth : e.score - birthDNA,\n }));\n}\n\n/** The current score and version: as written, else the last version, else birth. */\nfunction readCurrent(cur: Json, last: VersionEntry | undefined, birthDNA: number, born: string): FafDNA['current'] {\n return {\n version: str(cur.version, last?.version ?? 'v1.0.0'),\n score: isNum(cur.score) ? cur.score : (last?.score ?? birthDNA),\n lastSync: str(cur.lastSync, born),\n };\n}\n\nfunction readableView(raw: unknown): FafDNA | null {\n if (!isObject(raw) || !isObject(raw.birthCertificate)) {return null;}\n const bc = raw.birthCertificate;\n const birthDNA = birthScore(bc);\n if (birthDNA === null) {return null;}\n const born = str(bc.born);\n const versions = readVersions(raw.versions, birthDNA);\n const current = readCurrent(isObject(raw.current) ? raw.current : {}, versions[versions.length - 1], birthDNA, born);\n const growth = isObject(raw.growth) ? raw.growth : {};\n return {\n birthCertificate: {\n born,\n birthDNA,\n birthDNASource: bc.birthDNASource === 'legacy' || bc.birthWeightSource === 'legacy' ? 'legacy' : 'init',\n projectDNA: str(bc.projectDNA),\n certificate: str(bc.certificate),\n },\n versions,\n current,\n growth: {\n totalGrowth: current.score - birthDNA,\n daysActive: isNum(growth.daysActive) ? growth.daysActive : 0,\n milestones: readMilestones(Array.isArray(growth.milestones) ? growth.milestones : raw.milestones),\n },\n lastModified: str(raw.lastModified, born),\n format: 'faf-dna-v1',\n // Carried even out of a shape faf will not write to: losing earlier lives\n // while merely READING the file would be the very thing this guards against.\n ...(Array.isArray(raw.priorLineage) && raw.priorLineage.some(isPriorLineage)\n ? { priorLineage: raw.priorLineage.filter(isPriorLineage) }\n : {}),\n };\n}\n\n/**\n * The `.faf-dna` lineage of one project: birth, growth and the journey line.\n * This is the API `faf init` (birth), `faf auto` / `faf refresh` (recordGrowth)\n * and `faf dna` (getJourney, getBirthDNADisplay, getLog) use.\n *\n * - `birth(score)` starts a new lineage and writes it, replacing any\n * `.faf-dna` there (check `exists()` first unless a fresh start is meant —\n * `faf init` births only when there is none, or with `--force`).\n * - `recordGrowth(score, changes)` adds a version when the score changed.\n * It adds only to a file faf can prove it wrote (see the file header);\n * for any other file it writes nothing and returns null, and\n * `readOnlyReason()` says why.\n * - Reads never throw: a missing, unreadable, non-UTF-8 or non-JSON file,\n * or one with no usable birth certificate, reads as null / '' / [].\n *\n * Every write is atomic and stays inside the project: a `.faf-dna` link that\n * leads out of the project, dangles or leads to a file with another name is\n * refused (and reads as absent). A write is refused, too, when the file\n * changed on disk after this manager read it (another `faf` process recorded\n * growth meanwhile, say): SafePathError `changed`, nothing written.\n */\nexport class FafDNAManager {\n private readonly projectPath: string;\n private readonly dnaPath: string;\n private dna: FafDNA | null = null;\n /** True when the loaded file is one faf wrote (so it may be added to). */\n private own = false;\n /** The text read from `.faf-dna` (or last written), for the write's check. */\n private text: string | undefined;\n /** Why the file is read only, when it is; null when faf may add to it. */\n private reason: string | null = null;\n /** True once this manager found no `.faf-dna` (exists / load / birth) and\n * has not written one since: a birth then refuses a file that appeared\n * meanwhile instead of writing over it. */\n private sawNoFile = false;\n\n constructor(projectPath: string) {\n this.projectPath = projectPath;\n this.dnaPath = join(projectPath, '.faf-dna');\n }\n\n exists(): boolean {\n const there = existsSync(this.dnaPath);\n if (!there && !present(this.dnaPath)) {this.sawNoFile = true;}\n return there;\n }\n\n /** Birth — the first heartbeat. Writes the birth certificate with the honest first score.\n * When this manager found no `.faf-dna` (now, or at an earlier exists() /\n * load()), a file that appeared since is refused (SafePathError `changed`)\n * rather than written over; over a `.faf-dna` that is there, birth starts a\n * fresh lineage (`faf init --force`). */\n /** The lives this birth is about to end, oldest first — the one already on\n * disk, plus any it had itself inherited. Empty when there is no readable\n * `.faf-dna`, so a first birth writes no `priorLineage` key at all. */\n private endingLineage(): PriorLineage[] {\n // Deliberately NOT load(): that records what this manager has read, and\n // save()'s guard uses exactly that to refuse a write over a `.faf-dna` which\n // appeared since. Reading here to carry a lineage forward must not make the\n // manager believe it has seen the file (owner rule T11).\n const on = this.dna ?? (() => {\n const r = this.read();\n return r === null ? null : readableView(r.raw);\n })();\n const view = on;\n if (!view) {return [];}\n const bc = view.birthCertificate;\n return [\n ...(view.priorLineage ?? []),\n {\n born: bc.born,\n birthDNA: bc.birthDNA,\n certificate: bc.certificate,\n projectDNA: bc.projectDNA,\n lastScore: view.current.score,\n endedAt: new Date().toISOString(),\n },\n ];\n }\n\n birth(birthDNA: number): FafDNA {\n // Read what is here BEFORE overwriting it: a reset ends a life, it does not\n // unhappen one. Any shape faf can read contributes, including the\n // `birthWeight` files faf itself wrote before 2026-05-21.\n const priorLineage = this.endingLineage();\n if (!present(this.dnaPath)) {this.sawNoFile = true;}\n const now = new Date().toISOString();\n this.own = true;\n this.dna = {\n birthCertificate: {\n born: now,\n birthDNA,\n birthDNASource: 'init',\n projectDNA: this.generateProjectDNA(),\n certificate: this.generateCertificate(),\n },\n versions: [{ version: 'v1.0.0', timestamp: now, score: birthDNA, changes: ['Birth — initial context'], growth: 0 }],\n current: { version: 'v1.0.0', score: birthDNA, lastSync: now },\n growth: {\n totalGrowth: 0,\n daysActive: 0,\n milestones: [{ type: 'birth', score: birthDNA, date: now, version: 'v1.0.0', label: 'Birth', emoji: '🐣' }],\n },\n lastModified: now,\n format: 'faf-dna-v1',\n ...(priorLineage.length > 0 ? { priorLineage } : {}),\n };\n this.save();\n return this.dna;\n }\n\n /** True when `.faf-dna` exists and is one faf wrote — in faf's shape, and\n * exactly faf's own text — so recordGrowth may add to it. Any other file is\n * read, not written. */\n isFafShape(): boolean {\n return this.load() !== null && this.own;\n }\n\n /** Why faf leaves this `.faf-dna` as it is, in one plain line — or null when\n * there is none, or recordGrowth may add to it. */\n readOnlyReason(): string | null {\n this.load();\n return this.own ? null : this.reason;\n }\n\n /** Record growth — a new score on the journey. Returns null when there is no\n * DNA yet, or when the file is in another tool's shape (nothing is written). */\n recordGrowth(newScore: number, changes: string[]): FafDNA | null {\n if (!this.dna && !this.load()) {return null;}\n if (!this.own) {return null;}\n const dna = this.dna!;\n if (newScore === dna.current.score) {return dna;} // no change, no new version\n\n const now = new Date().toISOString();\n const birthDNA = dna.birthCertificate.birthDNA;\n const growth = newScore - birthDNA;\n const newVersion = this.incrementVersion(dna.versions[dna.versions.length - 1].version);\n\n dna.versions.push({ version: newVersion, timestamp: now, score: newScore, changes, growth });\n dna.current = { version: newVersion, score: newScore, lastSync: now };\n dna.growth.totalGrowth = growth;\n dna.growth.daysActive = this.daysSince(dna.birthCertificate.born);\n this.updateMilestones(newScore, newVersion, now);\n this.save();\n return dna;\n }\n\n /** The one-line journey: e.g. \"22% → 85% → 99% ← 92%\". */\n getJourney(): string {\n if (!this.dna && !this.load()) {return '';}\n const dna = this.dna!;\n const birth = dna.birthCertificate.birthDNA;\n const peak = dna.growth.milestones.find((m) => m.type === 'peak');\n const current = dna.current.score;\n\n let journey = `${birth}%`;\n if (peak && peak.score !== birth) {\n journey += ` → ${peak.score}%`;\n if (current < peak.score) {journey += ` ← ${current}%`;}\n } else if (current !== birth) {\n journey += ` → ${current}%`;\n }\n return journey;\n }\n\n getBirthDNADisplay(): { current: number; birthDNA: number; growth: number; born: string } | null {\n if (!this.dna && !this.load()) {return null;}\n const dna = this.dna!;\n return {\n current: dna.current.score,\n birthDNA: dna.birthCertificate.birthDNA,\n growth: dna.current.score - dna.birthCertificate.birthDNA,\n born: isStr(dna.birthCertificate.born) ? dna.birthCertificate.born : '',\n };\n }\n\n /** Complete version history, newest last. */\n getLog(): string[] {\n if (!this.dna && !this.load()) {return [];}\n return this.dna!.versions.map((v) => {\n const emoji = v.growth > 50 ? '🚀' : v.growth > 20 ? '📈' : '📊';\n const day = isStr(v.timestamp) ? v.timestamp.split('T')[0] : '';\n const changes = Array.isArray(v.changes) ? v.changes.filter(isStr).join(', ') : '';\n return `${v.version} — ${v.score}% ${emoji} (${day}) ${changes}`;\n });\n }\n\n /** Load `.faf-dna`. Never throws: missing, unreadable, not UTF-8, not JSON, a\n * refused link, or no usable birth certificate → null. A file faf did not\n * write (another shape, or not exactly faf's text) loads as a readable view\n * (see the file header). */\n load(): FafDNA | null {\n if (this.dna) {return this.dna;}\n if (!existsSync(this.dnaPath)) {\n if (!present(this.dnaPath)) {this.sawNoFile = true;}\n return null;\n }\n const read = this.read();\n if (read === null) {return null;}\n const { text, raw } = read;\n if (hasFafShape(raw) && serialise(raw) === text && growthLosesNothing(raw)) {\n this.own = true;\n this.reason = null;\n this.dna = raw;\n } else {\n this.own = false;\n this.dna = readableView(raw);\n this.reason = !this.dna ? NO_BIRTH : !hasFafShape(raw) ? NOT_FAF_SHAPE : serialise(raw) !== text ? NOT_FAF_TEXT\n : onlyFafKeys(raw) ? USER_LABEL : USER_NOTE;\n }\n this.text = text;\n return this.dna;\n }\n\n /** The file's text (strict UTF-8) and its JSON, or null with the reason noted. */\n private read(): { text: string; raw: unknown } | null {\n let text: string;\n try {\n text = readUtf8(resolveInside(this.projectPath, '.faf-dna'));\n } catch (e) {\n this.reason = e instanceof Error ? e.message : String(e);\n return null;\n }\n try {\n return { text, raw: JSON.parse(text) as unknown };\n } catch {\n this.reason = '.faf-dna is not JSON: faf leaves it as it is.';\n return null;\n }\n }\n\n private save(): void {\n if (!this.dna) {return;}\n this.dna.lastModified = new Date().toISOString();\n const text = serialise(this.dna);\n // The file must still be what this manager read (or, when it found none,\n // still be absent; before any read, what is there now): another process's\n // growth — or a .faf-dna that appeared meanwhile — is never written over.\n const expect = this.text ?? (this.sawNoFile ? null : readBytesIfPresent(resolveInside(this.projectPath, '.faf-dna')));\n // Atomic, and never through a link that leaves the project or dangles.\n safeWriteFile(this.dnaPath, text, { root: this.projectPath, expect });\n this.text = text;\n this.sawNoFile = false;\n }\n\n private generateProjectDNA(): string {\n return createHash('sha256')\n .update([this.projectPath, Date.now().toString(), Math.random().toString(36)].join(':'))\n .digest('hex')\n .substring(0, 16);\n }\n\n private generateCertificate(): string {\n const year = new Date().getFullYear();\n const rand = Math.random().toString(36).substring(2, 6).toUpperCase();\n const proj = basename(this.projectPath).replace(/[^A-Z0-9]/gi, '').toUpperCase().substring(0, 8).padEnd(4, 'X');\n return `FAF-${year}-${proj}-${rand}`;\n }\n\n private incrementVersion(version: string): string {\n const [maj, min, patch] = version.replace('v', '').split('.').map(Number);\n return `v${maj}.${min}.${patch + 1}`;\n }\n\n private daysSince(iso: string): number {\n return Math.floor((Date.now() - new Date(iso).getTime()) / 86_400_000);\n }\n\n private updateMilestones(score: number, version: string, now: string): void {\n if (!this.dna) {return;}\n const ms = this.dna.growth.milestones;\n const has = (t: Milestone['type']) => ms.some((m) => m.type === t);\n const add = (type: Milestone['type']) =>\n ms.push({ type, score, date: now, version, ...MILESTONE_TEXT[type] });\n\n if (score >= this.dna.birthCertificate.birthDNA * 2 && score > 0 && !has('doubled')) {add('doubled');}\n\n const peak = ms.find((m) => m.type === 'peak');\n if (!peak || score > peak.score) {\n if (peak) {ms.splice(ms.indexOf(peak), 1);}\n add('peak');\n }\n const cur = ms.findIndex((m) => m.type === 'current');\n if (cur >= 0) {ms.splice(cur, 1);}\n add('current');\n }\n}\n",
128
128
  "import { join } from 'path';\nimport type { FafData } from '../core/types.js';\nimport { FAF_CONTEXT_FILES } from '../core/safe-write.js';\nimport { fafMetaTag } from './claude.js';\nimport { injectFafBlock } from './inject.js';\nimport { filled, slotLabel, titleLabel } from './labels.js';\nimport { splitCommandNote, commandOnly } from './command-note.js';\n\n/** A value carrying real content — non-empty, not slotignored, non-empty array. */\nconst present = (v: unknown): boolean =>\n v !== null && v !== undefined && v !== '' && v !== 'slotignored' && !(Array.isArray(v) && v.length === 0);\n\n/** Render a slot value for inline display (arrays → comma list). */\nconst fmtVal = (v: unknown): string => (Array.isArray(v) ? v.join(', ') : String(v));\n\n/** Preference keys that describe human↔assistant interaction, NOT repo conventions. Excluded from AGENTS.md. */\nconst HUMAN_PREF = new Set([\n 'commit_style', 'communication', 'response_style', 'explanation_level', 'explanations', 'documentation', 'code_first',\n]);\n\n/** Stack keys that are context/marketing, not actual stack. Kept out of the Stack section. */\nconst NON_STACK = new Set(['target_user', 'core_problem', 'mission_purpose']);\n\n/**\n * Author a BETTER-shaped AGENTS.md from .faf data (+ repo enrichment at export).\n *\n * Deterministic projection from curated TRUTH — facts, not hallucinated prose\n * (Gloaguen: LLM freewrite hurts). Sections: orientation · setup · verify ·\n * map · conventions · three-tier guardrails · DoD · when stuck · security ·\n * commit. Human Context (who/why marketing) is intentionally omitted — that\n * belongs in README / project.faf, not agent ops.\n *\n * Design: BETTER guide + hand exemplar (faf-cli AGENTS.md) + agents-md-facts.\n */\nexport function renderAgentsMd(data: FafData): string {\n const lines: string[] = [];\n const push = (s = '') => lines.push(s);\n\n const ai = data.ai_instructions as\n | { warnings?: string[]; working_style?: Record<string, unknown> }\n | undefined;\n const prefs = data.preferences as Record<string, unknown> | undefined;\n const instant = data.instant_context as { key_files?: string[] } | undefined;\n const security = data.security as\n | { secrets?: string; example?: string; never?: string[] }\n | undefined;\n const commands = data.commands;\n const keyFiles = data.key_files ?? instant?.key_files;\n // Integration branch — git-flow repos PR into `dev`/`develop`, not `main`.\n // Read from project.default_branch; default `main`.\n const branch = present(data.project?.default_branch) ? String(data.project?.default_branch) : 'main';\n\n const entries = commands ? Object.entries(commands).filter(([, v]) => present(v)) : [];\n // Mutually exclusive so a key like `test:check` classifies ONCE (as a test).\n const testCmds = entries.filter(([k]) => /test/i.test(k));\n const lintCmds = entries.filter(([k]) => /lint|check/i.test(k) && !/test/i.test(k));\n const setupRaw = entries.filter(([k]) => !/test|lint|check/i.test(k));\n // Stable setup order: install → build → dev → start → other (enrich merge order is nondeterministic)\n const setupRank = (k: string): number => {\n const n = k.toLowerCase();\n if (/install|deps/.test(n)) {return 0;}\n if (/^build$|build/.test(n) && !/rebuild/.test(n)) {return 1;}\n if (/^dev$|develop/.test(n)) {return 2;}\n if (/^start$|run/.test(n)) {return 3;}\n return 4;\n };\n const setupCmds = [...setupRaw].sort((a, b) => setupRank(a[0]) - setupRank(b[0]) || a[0].localeCompare(b[0]));\n // Verify bar: tests first, then lint/typecheck (matches BETTER / agents-md-facts)\n const verifyCmds = [...testCmds, ...lintCmds];\n // Prose and checklists show the command alone — a note belongs in a comment.\n const buildEntry = setupCmds.find(([k]) => /build/i.test(k));\n const testCmd = testCmds[0] ? commandOnly(testCmds[0][1]) : undefined;\n const buildCmd = buildEntry ? commandOnly(buildEntry[1]) : undefined;\n\n push(fafMetaTag(data));\n push();\n push(`# AGENTS.md — ${data.project?.name ?? 'Project'}`);\n push();\n\n // §1 Orientation — one line: what it is · language · type · version\n const bits: string[] = [];\n if (data.project?.main_language) {bits.push(String(data.project.main_language));}\n if (present(data.project?.type)) {bits.push(`type: ${String(data.project?.type)}`);}\n if (present(data.project?.version)) {bits.push(`v${String(data.project?.version)}`);}\n let orientation = data.project?.goal ? String(data.project.goal).trim() : '';\n if (bits.length) {orientation += (orientation ? ' — ' : '') + bits.join(' · ');}\n if (orientation) {\n push(orientation);\n push();\n }\n // Never spell the marker tokens out in prose: any injector that searches for\n // them (ours until 7.12.0, and other tools') would take the quote for the block.\n push('> Authored by faf — do not edit the managed block; refresh with `faf export --agents`. Hand-written content outside the managed block is preserved.');\n push();\n\n // §2 Setup & build\n if (setupCmds.length) {\n push('## Setup & build');\n push();\n push('```bash');\n for (const [k, v] of setupCmds) {\n const { cmd, note } = splitCommandNote(v);\n push(`${cmd} # ${note ?? k}`);\n }\n push('```');\n push();\n }\n\n // §3 Run the tests — verify bar (tests + lint/typecheck)\n if (verifyCmds.length) {\n push('## Run the tests');\n push();\n push('```bash');\n for (const [, v] of verifyCmds) {\n const { cmd, note } = splitCommandNote(v);\n push(note ? `${cmd} # ${note}` : cmd);\n }\n push('```');\n push();\n }\n\n // §4 Where things live — a `Path | Role` table when any entry carries a\n // \" — role\" annotation; a plain list when they're all bare paths.\n if (keyFiles && keyFiles.length) {\n push('## Where things live');\n push();\n const rows = keyFiles.map((f) => {\n const s = String(f);\n const at = s.indexOf(' — ');\n return at > 0 ? { path: s.slice(0, at), role: s.slice(at + 3) } : { path: s, role: '' };\n });\n if (rows.some((r) => r.role)) {\n push('| Path | Role |');\n push('|------|------|');\n for (const r of rows) {push(`| \\`${r.path}\\` | ${r.role} |`);}\n } else {\n for (const r of rows) {push(`- \\`${r.path}\\``);}\n }\n push();\n }\n\n // §5 Conventions — real repo constraints only (human↔assistant prefs excluded)\n const conventions = new Map<string, string>();\n const collect = (obj: Record<string, unknown> | undefined) => {\n if (!obj) {return;}\n for (const [k, v] of Object.entries(obj)) {\n if (HUMAN_PREF.has(k) || !present(v)) {continue;}\n const label = titleLabel(k);\n if (!conventions.has(label)) {conventions.set(label, fmtVal(v));}\n }\n };\n collect(ai?.working_style);\n collect(prefs);\n const detectedConv = (data.conventions as string[] | undefined) ?? [];\n if (conventions.size || detectedConv.length) {\n push('## Conventions');\n push();\n for (const [label, val] of conventions) {push(`- **${label}:** ${val}`);}\n for (const c of detectedConv) {if (present(c)) {push(`- ${c}`);}}\n push();\n }\n\n // §6 Guardrails — Always / Ask first / Never (three-tier BETTER)\n const warnings = (ai?.warnings ?? []).filter((w) => present(w));\n const always: string[] = ['read the tree'];\n if (testCmd) {always.push(`run the tests (\\`${testCmd}\\`)`);}\n if (buildCmd) {always.push('build the project');}\n for (const [, v] of lintCmds.slice(0, 1)) {always.push(`\\`${commandOnly(v)}\\``);}\n\n push('## Guardrails');\n push();\n for (const w of warnings) {push(`- ${w}`);}\n push(`- **Always OK:** ${[...new Set(always)].join(' · ')}.`);\n push('- **Ask first:** dependency installs, deletions, migrations, schema changes, publish/release.');\n // Enable-then-restrict: safe path first, then the landmine\n push(`- **Never:** force-push · push straight to \\`${branch}\\` (branch and open a PR) · commit secrets.`);\n push();\n\n // §7 Definition of Done\n const dod: string[] = [];\n for (const [, v] of lintCmds) {dod.push(`\\`${commandOnly(v)}\\` exits 0`);}\n for (const [, v] of testCmds) {dod.push(`\\`${commandOnly(v)}\\` passes`);}\n dod.push('changes committed with a conventional message');\n push('## Definition of Done');\n push();\n push(`Done when: ${[...new Set(dod)].join(' · ')}.`);\n push();\n\n // §8 When stuck — static BETTER default (cheap, high value)\n push('## When stuck');\n push();\n push(\n `Ask a clarifying question, propose a short plan, or open a draft PR with notes — do not push large speculative changes to \\`${branch}\\`.`,\n );\n push();\n\n // §9 Security & secrets — when detected (never the values)\n if (security && (present(security.secrets) || (security.never ?? []).length)) {\n push('## Security & secrets');\n push();\n if (present(security.secrets)) {\n const ex = present(security.example) ? ` (see \\`${security.example}\\`)` : '';\n push(`- Secrets live in \\`${security.secrets}\\`${ex}. Never read or commit them.`);\n }\n for (const n of security.never ?? []) {if (present(n)) {push(`- Never read or commit \\`${n}\\`.`);}}\n push();\n }\n\n // §10 Commit & PR — always (defaults + optional commit_style)\n push('## Commit & PR');\n push();\n if (prefs && present(prefs.commit_style)) {\n push(`- Commit style: ${fmtVal(prefs.commit_style)}`);\n } else {\n push('- Conventional Commits preferred (`feat:`, `fix:`, `chore:`, …).');\n }\n push(`- Branch off \\`${branch}\\` and open a PR — never commit to \\`${branch}\\` directly.`);\n push('- If build/test scripts or layout change, refresh this file in the **same PR** (`faf export --agents`).');\n push();\n\n // Stack (reference) — actual stack only; omit empty / all-slotignored noise\n if (data.stack) {\n const stack: string[] = [];\n for (const [key, value] of Object.entries(data.stack)) {\n if (NON_STACK.has(key)) {continue;}\n if (filled(value)) {stack.push(`- **${slotLabel(`stack.${key}`)}:** ${value.trim()}`);}\n }\n if (stack.length) {\n push('## Stack');\n push();\n for (const s of stack) {push(s);}\n push();\n }\n }\n\n // No Human Context section — who/why marketing is README / .faf DNA, not agent ops (BETTER).\n\n const gen = data.generated;\n if (present(gen)) {push(`*Context authored: ${String(gen)}*`);}\n\n return lines.join('\\n');\n}\n\n/** Write AGENTS.md — non-destructive: injects/updates the faf block, preserves the rest. */\nexport function writeAgentsMd(dir: string, data: FafData): void {\n injectFafBlock(join(dir, FAF_CONTEXT_FILES.agents), renderAgentsMd(data));\n}\n",
129
- "import { existsSync, statSync } from 'fs';\nimport { join } from 'path';\nimport type { FafData } from '../core/types.js';\nimport { injectFafBlock } from './inject.js';\nimport { slotLabel } from './labels.js';\nimport { FAF_CONTEXT_FILES, readUtf8, resolveInside } from '../core/safe-write.js';\n\nconst CLAUDE_MD = FAF_CONTEXT_FILES.claude;\nconst SYNC_MARKER = 'STATUS: SYNC ACTIVE';\n\n/** Read CLAUDE.md from a directory. A CLAUDE.md link that leaves the\n * directory, or leads to a file that is not an AI context file, is refused\n * (SafePathError) and nothing is read; CLAUDE.md → AGENTS.md is read\n * through. A CLAUDE.md that is not UTF-8 is refused too (`faf sync --direction\n * pull` writes what it reads into project.faf). */\nexport function readClaudeMd(dir: string): string | null {\n const path = join(dir, CLAUDE_MD);\n if (!existsSync(path)) {return null;}\n return readUtf8(resolveInside(dir, CLAUDE_MD));\n}\n\n/** Write CLAUDE.md — non-destructive: injects/updates the faf block, preserves the rest. */\nexport function writeClaudeMd(dir: string, content: string): void {\n injectFafBlock(join(dir, CLAUDE_MD), content);\n}\n\n/** Get mtime of CLAUDE.md */\nexport function claudeMdMtime(dir: string): number | null {\n const path = join(dir, CLAUDE_MD);\n if (!existsSync(path)) {return null;}\n return statSync(path).mtimeMs;\n}\n\n/** Optional knobs for the 2-line FAF stamp. */\nexport interface FafMetaOpts {\n /** Canonical structured-truth file the md claims (default `project.faf`).\n * Use for AI-context md (CLAUDE/GEMINI/AGENTS/.cursorrules). */\n claim?: string;\n /** Role identifier (`readme`, `changelog`, `skill`, …).\n * Use for repo-meta md whose primary reader is human. Mutually exclusive with `claim`. */\n doc?: string;\n /** Current AI-readiness score (0–100). */\n score?: number;\n /** Sister-product family — `FAF` (default), `TAF`, `WJTTC`, … */\n family?: string;\n /** Other docs in the repo the reader should know about. */\n siblings?: string[];\n}\n\n/**\n * Build the canonical 2-line FAF stamp.\n *\n * Line 1 — positional identity: `name | lang | type | description`\n * Line 2 — key=value navigation/state: `claim=… | score=… | family=… | siblings=…`\n *\n * Spec: `memory/cross-ai-2-line-meta-stamp.md`. Issue #64.\n */\nexport function fafMetaTag(data: FafData, opts: FafMetaOpts = {}): string {\n const name = String(data.project?.name ?? '').trim();\n const lang = String(data.project?.main_language ?? '').trim();\n const type = String(data.project?.type ?? '').trim();\n const desc = String(data.project?.goal ?? '').trim();\n const line1 = `<!-- faf: ${[name, lang, type, desc].join(' | ')} -->`;\n\n const kv: string[] = [];\n if (opts.doc) {\n kv.push(`doc=${opts.doc}`);\n } else {\n kv.push(`claim=${opts.claim ?? 'project.faf'}`);\n }\n if (typeof opts.score === 'number') {kv.push(`score=${opts.score}`);}\n kv.push(`family=${opts.family ?? 'FAF'}`);\n if (opts.siblings && opts.siblings.length > 0) {\n kv.push(`siblings=${opts.siblings.join(',')}`);\n }\n const line2 = `<!-- faf: ${kv.join(' | ')} -->`;\n\n return `${line1}\\n${line2}`;\n}\n\n/** Render CLAUDE.md content from .faf data */\nexport function renderClaudeMd(data: FafData): string {\n const lines: string[] = [];\n const name = data.project?.name ?? 'Project';\n const lang = data.project?.main_language ?? '';\n const goal = data.project?.goal ?? '';\n\n // Meta tag — project DNA, invisible to renderers, visible to AI\n lines.push(fafMetaTag(data));\n lines.push('');\n\n // Title\n lines.push(`# CLAUDE.md — ${name}`);\n lines.push('');\n\n // What This Is\n if (goal) {\n lines.push('## What This Is');\n lines.push('');\n lines.push(goal);\n lines.push('');\n }\n\n // Stack — only non-ignored slots\n const stack = data.stack ?? {};\n const stackEntries: string[] = [];\n if (lang) {stackEntries.push(`**Language:** ${lang}`);}\n for (const [key, val] of Object.entries(stack)) {\n if (val && val !== 'slotignored' && String(val).trim()) {\n stackEntries.push(`**${slotLabel(`stack.${key}`)}:** ${val}`);\n }\n }\n if (stackEntries.length > 0) {\n lines.push('## Stack');\n lines.push('');\n for (const entry of stackEntries) {\n lines.push(`- ${entry}`);\n }\n lines.push('');\n }\n\n // Context — from human_context (the 6Ws)\n const hc = data.human_context ?? {};\n const contextEntries = ([\n ['who', hc.who], ['what', hc.what], ['why', hc.why],\n ['where', hc.where], ['when', hc.when], ['how', hc.how],\n ] as [string, unknown][])\n .filter(([, v]) => v && String(v).trim())\n .map(([k, v]) => `- **${slotLabel(`human_context.${k}`)}:** ${v}`);\n\n if (contextEntries.length > 0) {\n lines.push('## Context');\n lines.push('');\n lines.push(...contextEntries);\n lines.push('');\n }\n\n // Sync footer\n lines.push('---');\n lines.push('');\n lines.push(`*${SYNC_MARKER} — ${new Date().toISOString()}*`);\n lines.push('');\n\n return lines.join('\\n');\n}\n\n/** Strip a trailing `vN`, `vN.N`, `vN.N.N…` version token from a project name.\n * Requires whitespace before the `v` so hyphenated names like `mcpaas-vue` or\n * `faf-cli-v6` are preserved. Issue #64 sibling — see #62. */\nfunction stripVersionTrailer(name: string): string {\n return name.replace(/\\s+v\\d+(?:\\.\\d+)*\\s*$/i, '').trim();\n}\n\n/** Extract project data from CLAUDE.md content (pull direction) */\nexport function parseClaudeMd(content: string): Partial<FafData> {\n const data: Partial<FafData> = { project: {} };\n\n // New format: \"# CLAUDE.md — project-name\"\n const titleMatch = content.match(/^# CLAUDE\\.md\\s*[—–-]\\s*(.+)$/m);\n if (titleMatch) {data.project!.name = stripVersionTrailer(titleMatch[1].trim());}\n\n // Old format fallback: \"**Name:** value\"\n if (!data.project!.name) {\n const nameMatch = content.match(/\\*\\*Name:\\*\\*\\s*(.+)/);\n if (nameMatch) {data.project!.name = stripVersionTrailer(nameMatch[1].trim());}\n }\n\n // New format: paragraph after \"## What This Is\"\n const whatMatch = content.match(/## What This Is\\s*\\n\\s*\\n(.+)/);\n if (whatMatch) {data.project!.goal = whatMatch[1].trim();}\n\n // Old format fallback: \"**What Building:** value\"\n if (!data.project!.goal) {\n const goalMatch = content.match(/\\*\\*What Building:\\*\\*\\s*(.+)/);\n if (goalMatch) {data.project!.goal = goalMatch[1].trim();}\n }\n\n // New format: \"**Language:** value\" under Stack\n const langMatch = content.match(/\\*\\*Language:\\*\\*\\s*(.+)/);\n if (langMatch) {data.project!.main_language = langMatch[1].trim();}\n\n // Old format fallback: \"**Main Language:** value\"\n if (!data.project!.main_language) {\n const oldLangMatch = content.match(/\\*\\*Main Language:\\*\\*\\s*(.+)/);\n if (oldLangMatch) {data.project!.main_language = oldLangMatch[1].trim();}\n }\n\n return data;\n}\n",
129
+ "import { existsSync, statSync } from 'fs';\nimport { join } from 'path';\nimport type { FafData } from '../core/types.js';\nimport { injectFafBlock } from './inject.js';\nimport { slotLabel } from './labels.js';\nimport { FAF_CONTEXT_FILES, readUtf8, resolveInside } from '../core/safe-write.js';\n\nconst CLAUDE_MD = FAF_CONTEXT_FILES.claude;\nconst SYNC_MARKER = 'STATUS: SYNC ACTIVE';\n\n/** Read CLAUDE.md from a directory. A CLAUDE.md link that leaves the\n * directory, or leads to a file that is not an AI context file, is refused\n * (SafePathError) and nothing is read; CLAUDE.md → AGENTS.md is read\n * through. A CLAUDE.md that is not UTF-8 is refused too. Library export;\n * `faf sync` never reads CLAUDE.md back into project.faf. */\nexport function readClaudeMd(dir: string): string | null {\n const path = join(dir, CLAUDE_MD);\n if (!existsSync(path)) {return null;}\n return readUtf8(resolveInside(dir, CLAUDE_MD));\n}\n\n/** Write CLAUDE.md — non-destructive: injects/updates the faf block, preserves the rest. */\nexport function writeClaudeMd(dir: string, content: string): void {\n injectFafBlock(join(dir, CLAUDE_MD), content);\n}\n\n/** Get mtime of CLAUDE.md */\nexport function claudeMdMtime(dir: string): number | null {\n const path = join(dir, CLAUDE_MD);\n if (!existsSync(path)) {return null;}\n return statSync(path).mtimeMs;\n}\n\n/** Optional knobs for the 2-line FAF stamp. */\nexport interface FafMetaOpts {\n /** Canonical structured-truth file the md claims (default `project.faf`).\n * Use for AI-context md (CLAUDE/GEMINI/AGENTS/.cursorrules). */\n claim?: string;\n /** Role identifier (`readme`, `changelog`, `skill`, …).\n * Use for repo-meta md whose primary reader is human. Mutually exclusive with `claim`. */\n doc?: string;\n /** Current AI-readiness score (0–100). */\n score?: number;\n /** Sister-product family — `FAF` (default), `TAF`, `WJTTC`, … */\n family?: string;\n /** Other docs in the repo the reader should know about. */\n siblings?: string[];\n}\n\n/**\n * Build the canonical 2-line FAF stamp.\n *\n * Line 1 — positional identity: `name | lang | type | description`\n * Line 2 — key=value navigation/state: `claim=… | score=… | family=… | siblings=…`\n *\n * Spec: `memory/cross-ai-2-line-meta-stamp.md`. Issue #64.\n */\nexport function fafMetaTag(data: FafData, opts: FafMetaOpts = {}): string {\n const name = String(data.project?.name ?? '').trim();\n const lang = String(data.project?.main_language ?? '').trim();\n const type = String(data.project?.type ?? '').trim();\n const desc = String(data.project?.goal ?? '').trim();\n const line1 = `<!-- faf: ${[name, lang, type, desc].join(' | ')} -->`;\n\n const kv: string[] = [];\n if (opts.doc) {\n kv.push(`doc=${opts.doc}`);\n } else {\n kv.push(`claim=${opts.claim ?? 'project.faf'}`);\n }\n if (typeof opts.score === 'number') {kv.push(`score=${opts.score}`);}\n kv.push(`family=${opts.family ?? 'FAF'}`);\n if (opts.siblings && opts.siblings.length > 0) {\n kv.push(`siblings=${opts.siblings.join(',')}`);\n }\n const line2 = `<!-- faf: ${kv.join(' | ')} -->`;\n\n return `${line1}\\n${line2}`;\n}\n\n/** Render CLAUDE.md content from .faf data */\nexport function renderClaudeMd(data: FafData): string {\n const lines: string[] = [];\n const name = data.project?.name ?? 'Project';\n const lang = data.project?.main_language ?? '';\n const goal = data.project?.goal ?? '';\n\n // Meta tag — project DNA, invisible to renderers, visible to AI\n lines.push(fafMetaTag(data));\n lines.push('');\n\n // Title\n lines.push(`# CLAUDE.md — ${name}`);\n lines.push('');\n\n // What This Is\n if (goal) {\n lines.push('## What This Is');\n lines.push('');\n lines.push(goal);\n lines.push('');\n }\n\n // Stack — only non-ignored slots\n const stack = data.stack ?? {};\n const stackEntries: string[] = [];\n if (lang) {stackEntries.push(`**Language:** ${lang}`);}\n for (const [key, val] of Object.entries(stack)) {\n if (val && val !== 'slotignored' && String(val).trim()) {\n stackEntries.push(`**${slotLabel(`stack.${key}`)}:** ${val}`);\n }\n }\n if (stackEntries.length > 0) {\n lines.push('## Stack');\n lines.push('');\n for (const entry of stackEntries) {\n lines.push(`- ${entry}`);\n }\n lines.push('');\n }\n\n // Context — from human_context (the 6Ws)\n const hc = data.human_context ?? {};\n const contextEntries = ([\n ['who', hc.who], ['what', hc.what], ['why', hc.why],\n ['where', hc.where], ['when', hc.when], ['how', hc.how],\n ] as [string, unknown][])\n .filter(([, v]) => v && String(v).trim())\n .map(([k, v]) => `- **${slotLabel(`human_context.${k}`)}:** ${v}`);\n\n if (contextEntries.length > 0) {\n lines.push('## Context');\n lines.push('');\n lines.push(...contextEntries);\n lines.push('');\n }\n\n // Sync footer\n lines.push('---');\n lines.push('');\n lines.push(`*${SYNC_MARKER} — ${new Date().toISOString()}*`);\n lines.push('');\n\n return lines.join('\\n');\n}\n\n/** Strip a trailing `vN`, `vN.N`, `vN.N.N…` version token from a project name.\n * Requires whitespace before the `v` so hyphenated names like `mcpaas-vue` or\n * `faf-cli-v6` are preserved. Issue #64 sibling — see #62. */\nfunction stripVersionTrailer(name: string): string {\n return name.replace(/\\s+v\\d+(?:\\.\\d+)*\\s*$/i, '').trim();\n}\n\n/** Extract project data from CLAUDE.md content (pull direction) */\nexport function parseClaudeMd(content: string): Partial<FafData> {\n const data: Partial<FafData> = { project: {} };\n\n // New format: \"# CLAUDE.md — project-name\"\n const titleMatch = content.match(/^# CLAUDE\\.md\\s*[—–-]\\s*(.+)$/m);\n if (titleMatch) {data.project!.name = stripVersionTrailer(titleMatch[1].trim());}\n\n // Old format fallback: \"**Name:** value\"\n if (!data.project!.name) {\n const nameMatch = content.match(/\\*\\*Name:\\*\\*\\s*(.+)/);\n if (nameMatch) {data.project!.name = stripVersionTrailer(nameMatch[1].trim());}\n }\n\n // New format: paragraph after \"## What This Is\"\n const whatMatch = content.match(/## What This Is\\s*\\n\\s*\\n(.+)/);\n if (whatMatch) {data.project!.goal = whatMatch[1].trim();}\n\n // Old format fallback: \"**What Building:** value\"\n if (!data.project!.goal) {\n const goalMatch = content.match(/\\*\\*What Building:\\*\\*\\s*(.+)/);\n if (goalMatch) {data.project!.goal = goalMatch[1].trim();}\n }\n\n // New format: \"**Language:** value\" under Stack\n const langMatch = content.match(/\\*\\*Language:\\*\\*\\s*(.+)/);\n if (langMatch) {data.project!.main_language = langMatch[1].trim();}\n\n // Old format fallback: \"**Main Language:** value\"\n if (!data.project!.main_language) {\n const oldLangMatch = content.match(/\\*\\*Main Language:\\*\\*\\s*(.+)/);\n if (oldLangMatch) {data.project!.main_language = oldLangMatch[1].trim();}\n }\n\n return data;\n}\n",
130
130
  "import { dirname, resolve } from 'path';\nimport { SafePathError, readUtf8, resolveInside, safeWriteFile } from '../core/safe-write.js';\nimport { BlockReader, MAX_OPEN_CONTAINERS, type HiddenIn } from './commonmark.js';\n\n/**\n * Block markers for the faf-managed front section.\n *\n * Markdown files (AGENTS.md, CLAUDE.md, GEMINI.md) use HTML comments; non-markdown\n * files (.cursorrules) pass hash-comment markers via the `start`/`end` args.\n */\nexport const FAF_START = '<!-- faf:start -->';\nexport const FAF_END = '<!-- faf:end -->';\n\nconst BOM = '\\uFEFF';\n\n/** Split into lines keeping each line's own terminator (\\r\\n, \\r or \\n). */\nexport function linesWithEnds(text: string): string[] {\n return text.match(/[^\\r\\n]*(?:\\r\\n|\\r|\\n|$)/g)?.filter((l, i, a) => l !== '' || i < a.length - 1) ?? [];\n}\n\nexport const stripEnd = (line: string): string => line.replace(/\\r?\\n$|\\r$/, '');\n/** A line as the marker rules see it: terminator, a leading BOM and trailing whitespace dropped. */\nconst bareLine = (line: string): string => stripEnd(line).replace(/^\\uFEFF/, '').trimEnd();\n\n// ─── Markdown regions: two readings ──────────────────────────────────────────\n//\n// Text in fenced or indented code, in a raw HTML block (<pre>, <script>,\n// <style>, <textarea>, <?…?>, <!X…>, <![CDATA[…]]>) or in a multi-line HTML\n// comment is shown as code, or not shown at all — a marker line there is an\n// example, never a marker. faf reads every file two ways (commonmark.ts):\n// (a) as CommonMark reads it: list items and block quotes included. A list\n// item's lines sit at its content column (a tab after the marker\n// advances to the next multiple of 4); a fence or raw block opened in a\n// list item closes at that column and ends when the item does; no\n// fence opens inside an HTML block of types 6 or 7 (<div>, <details>,\n// a lone tag) until a blank line;\n// (b) plainly, every line at column 0: the same blocks, with no list items\n// and no block quotes.\n// A START/END pair is faf's block only when both readings find that same\n// pair. When they differ the file is the user's, and faf prefixes: when in\n// doubt, prefix. A file that nests more than MAX_OPEN_CONTAINERS block quotes,\n// lists and list items before faf's block is one faf cannot read for sure:\n// the reading stops there, and faf prefixes too.\n\n/** One reading's search: the latest START seen, and the pair once found. */\ninterface Search {\n reader: BlockReader;\n start: number;\n found: { start: number; end: number } | null;\n}\n\n/** One line of the text, where it starts, and its BOM-free content. */\ninterface ScanLine {\n offset: number;\n /** Where the line's text starts (after a line-1 BOM). */\n from: number;\n /** Where the line's text ends (before its terminator). */\n to: number;\n content: string;\n}\n\nfunction* scanLines(text: string): Generator<ScanLine> {\n let offset = 0;\n for (const line of linesWithEnds(text)) {\n const body = stripEnd(line);\n const bom = offset === 0 && body.charCodeAt(0) === 0xfeff ? 1 : 0;\n yield { offset, from: offset + bom, to: offset + body.length, content: body.slice(bom) };\n offset += line.length;\n }\n}\n\n/** Move each reading that shows `line` on: a START there becomes its latest\n * START, an END after a START completes its pair. */\nfunction advance(shown: Search[], line: ScanLine, isStart: (l: string) => boolean, isEnd: (l: string) => boolean): void {\n const end = shown.some(r => r.start !== -1) && isEnd(line.content);\n const start = isStart(line.content);\n for (const r of shown) {\n if (r.start !== -1 && end) {\n r.found = { start: r.start, end: line.to };\n } else if (start) {\n r.start = line.from;\n }\n }\n}\n\n/**\n * faf's marked range in `text`: in each reading, the last START line before\n * the first END line after it (the innermost pair — text between an earlier\n * START and the last one is kept), both outside every Markdown region. The\n * two readings must find the same pair; otherwise there is no range. Returns\n * the char range covering both lines (the END line's terminator excluded), or\n * null. A leading BOM on line 1 stays outside the range. `isStart` and\n * `isEnd` are asked about each line shown as text in at least one reading,\n * once, in order, on the line with its terminator and that BOM removed. Past\n * MAX_OPEN_CONTAINERS open containers the CommonMark reading stops, and there\n * is no range (a pair found before that point still counts). Time grows with\n * the text's length, not with how deep it nests.\n */\nexport function findMarkedRange(\n text: string,\n isStart: (line: string) => boolean,\n isEnd: (line: string) => boolean,\n): { start: number; end: number } | null {\n const [a, b]: Search[] = [new BlockReader(true), new BlockReader(false)].map(reader => ({ reader, start: -1, found: null }));\n for (const line of scanLines(text)) {\n const hidden = [a, b].map(r => r.reader.line(line.content));\n if (a.reader.tooDeep) {return null;} // nested too deep to read for sure: the file is the user's\n const shown = [a, b].filter((_, i) => hidden[i] === null);\n if (shown.length > 0) {advance(shown, line, isStart, isEnd);}\n // Both readings end their pair on this same line, or they do not agree.\n if (a.found || b.found) {return a.found && b.found && a.found.start === b.found.start ? a.found : null;}\n }\n return null;\n}\n\n/** A whole marker line at column 0: exactly the marker text (a CRLF line's\n * `\\r` is its terminator). Trailing spaces or tabs make it text, not a marker. */\nconst markerLine = (marker: string) => (line: string): boolean => line === marker;\n\n/**\n * Locate the faf-managed block in `text`: a START marker line and the first\n * END marker line after it, both outside fenced and indented code, raw HTML\n * blocks and multi-line HTML comments, under both readings (see\n * {@link findMarkedRange}). Returns the char range covering both marker lines\n * (terminator of the END line excluded), or null when there is no complete\n * block both readings agree on.\n *\n * Markers are matched as WHOLE LINES at column 0 — exactly the marker text,\n * nothing after it — never as substrings. Substring search was a real bug\n * (7.1.4–7.11.0): renderAgentsMd quoted the marker tokens in its own\n * blockquote, so on every re-run `indexOf(end)` hit the quote, cut the old\n * block in half and appended its stale tail below the new block — `faf\n * export --agents` grew AGENTS.md by ~49 lines per run. The same happened to\n * users who documented the markers in a code fence above the block.\n *\n * Two START lines before an END: the pair is the last START and that END.\n * faf's own body never holds a column-0 START (see {@link wrapFafBlock}), so\n * the text between the two STARTs is the user's and stays. A START with no\n * END is not a block: the caller treats \"no block\" as a user file and\n * prefixes — it never reclaims. faf's own block is always found again where\n * faf put it (see {@link placeFafBlock}).\n */\nexport function findFafBlock(\n text: string,\n start: string = FAF_START,\n end: string = FAF_END,\n): { start: number; end: number } | null {\n return findMarkedRange(text, markerLine(start), markerLine(end));\n}\n\n/** For each reading that would hide a line of `end` after `text`: the line\n * that ends the region it sits in (null when no single line does). */\nfunction closersFor(text: string, end: string): Array<string | null> {\n const closers: Array<string | null> = [];\n for (const containers of [true, false]) {\n const reader = new BlockReader(containers);\n for (const line of linesWithEnds(text)) {reader.line(stripEnd(line));}\n if (reader.clone().line(end) !== null) {closers.push(reader.closer());}\n }\n return closers;\n}\n\n/** No line of faf's own body leaves more block quotes, lists and list items\n * open than this (as CommonMark reads it) — far below the reader's cap,\n * MAX_OPEN_CONTAINERS, so the next run always reads the block to its end,\n * quoted (one quote more) or not. See {@link capDepth}. */\nexport const BODY_MAX_CONTAINERS = 16;\n\n/** The same lines, with the marker that would open a block quote, list or\n * list item past BODY_MAX_CONTAINERS escaped with a backslash — `\\>` for a\n * quote, `\\-` / `\\*` / `\\+` for a bullet, `1\\.` for an ordered item — so\n * that line opens nothing more and shows the same text (a .faf value holding\n * a 101-deep `>>>…` quote, or a list nested 52 levels deep). Every line\n * within the cap is left exactly as it is. */\nfunction capDepth(lines: string[]): string[] {\n const reader = new BlockReader(true);\n return lines.map(line => {\n const at = reader.overflowAt(stripEnd(line), BODY_MAX_CONTAINERS);\n let out = line;\n if (at >= 0) {\n const ordered = /^\\d{1,9}(?=[.)])/.exec(line.slice(at));\n const mark = ordered ? at + ordered[0].length : at;\n out = `${line.slice(0, mark)}\\\\${line.slice(mark)}`;\n }\n reader.line(stripEnd(out));\n return out;\n });\n}\n\n/** faf's own body, made safe to wrap between its markers:\n * - a body line that is itself a marker line (a .faf value that documents\n * the markers, say — with or without trailing spaces) would let the next\n * write cut the block there and grow the file every run — it is indented\n * one space: no longer a column-0 marker, and the text is unchanged;\n * - a body that nests block quotes or lists past BODY_MAX_CONTAINERS would\n * stop the next run's reading inside the block, and faf would prefix a\n * second block — the marker that goes past it is escaped (see\n * {@link capDepth});\n * - a body that leaves fenced code, a raw HTML block or a comment open (a\n * .faf value holding a ``` line, say) would hide the END line from the\n * next scan, and faf would prefix a second block — the region is closed\n * on a line of its own at the end of the body, in each reading. A closer\n * that would hide the END line in the other reading is not added: such a\n * body is quoted by {@link placeFafBlock} instead. */\nfunction guardBody(body: string, start: string, end: string): string {\n const lines = capDepth(linesWithEnds(body).map(line => {\n const bare = bareLine(line);\n return bare === start || bare === end ? ` ${line}` : line;\n }));\n let text = lines.join('');\n let hiding = closersFor(text, end);\n while (hiding.length > 0 && hiding[0] !== null) {\n const next = `${text}\\n${hiding[0]}`;\n const after = closersFor(next, end);\n if (after.length >= hiding.length) {break;}\n text = next;\n hiding = after;\n }\n return text;\n}\n\n/** The same block with every body line quoted (`> `; a blank line `>`): a\n * block quote in the CommonMark reading and plain text in the column-0 one,\n * so no body line can hide the END line in either — whatever the text\n * before the block leaves open. The fallback for a body the closers cannot\n * settle. */\nfunction quoteBody(wrapped: string, start: string, end: string): string {\n const body = wrapped.slice(start.length + 1, wrapped.length - end.length - 1);\n const quoted = linesWithEnds(body).map(line => (stripEnd(line) === '' ? `>${line}` : `> ${line}`)).join('');\n return `${start}\\n${quoted}\\n${end}`;\n}\n\n/**\n * `head`, faf's block (`wrapped`, from {@link wrapFafBlock}) and `tail` as one\n * text in which {@link findFafBlock} finds the block exactly where it was put\n * — so the next write updates it in place and never stacks a second one. A\n * body that would not be found there (it leaves a region open in only one\n * reading, or the text before it holds a raw HTML block the body continues)\n * is quoted line by line instead. If even that is not found, it throws a\n * SafePathError (`unplaceable`) naming `path` (the file being written):\n * \"<file>: faf could not place its block where the next run finds it again —\n * faf left it unchanged\" — one line, and nothing is written.\n */\nexport function placeFafBlock(\n head: string,\n wrapped: string,\n tail: string,\n start: string = FAF_START,\n end: string = FAF_END,\n path = 'the file',\n): string {\n const placed = (block: string): string | null => {\n const text = `${head}${block}${tail}`;\n const found = findFafBlock(text, start, end);\n return found && found.start === head.length && found.end === head.length + block.length ? text : null;\n };\n const text = placed(wrapped) ?? placed(quoteBody(wrapped, start, end));\n if (text === null) {\n throw new SafePathError('unplaceable', path, `${path}: faf could not place its block where the next run finds it again — faf left it unchanged`, { onWrite: true });\n }\n return text;\n}\n\n/** The managed block: START, the body (guarded — see guardBody), END. */\nexport function wrapFafBlock(block: string, start: string = FAF_START, end: string = FAF_END): string {\n return `${start}\\n${guardBody(block.trim(), start, end)}\\n${end}`;\n}\n\n/** The file's new text: `existing` (null when there is no file) with `wrapped`\n * as its managed block, placed where the next scan finds it again (see\n * {@link placeFafBlock}; `path` names the file in its refusal). */\nexport function withFafBlock(existing: string | null, wrapped: string, start: string = FAF_START, end: string = FAF_END, path?: string): string {\n // 1. No file → just the block.\n if (existing === null) {return placeFafBlock('', wrapped, '\\n', start, end, path);}\n\n // 2. A complete block → replace only the managed block; keep everything around it.\n const found = findFafBlock(existing, start, end);\n if (found) {return placeFafBlock(existing.slice(0, found.start), wrapped, existing.slice(found.end), start, end, path);}\n\n // 3. Everything else → prefix the block and keep every byte already there. A\n // file with no marker lines is the user's, whatever its first line says —\n // a faf-looking stamp or footer proves nothing. A leading BOM stays at byte 0.\n const bom = existing.startsWith(BOM) ? BOM : '';\n return placeFafBlock(bom, wrapped, `\\n\\n${existing.slice(bom.length)}`, start, end, path);\n}\n\n/** Read a resolved path, or null when nothing is there yet. Only ENOENT reads\n * as \"no file\"; any other error is thrown, so a file faf could not read is\n * never treated as empty and written fresh. The text is decoded strictly: a\n * file that is not UTF-8 (a UTF-16 file, cp1252 bytes) is refused\n * (SafePathError `not-utf8`) and left as it is — see readUtf8. */\nexport function readIfPresent(path: string): string | null {\n try {\n return readUtf8(path);\n } catch (e) {\n if ((e as NodeJS.ErrnoException).code === 'ENOENT') {return null;}\n throw e;\n }\n}\n\nexport interface InjectOptions {\n /** The project folder the file must stay inside. Default: the file's own\n * folder. Pass it when the file sits in a subfolder (`.github/…`), so a\n * linked subfolder cannot carry the write out of the project. */\n root?: string;\n}\n\n/**\n * Non-destructively write a faf-managed block into a file.\n *\n * - file does not exist → create it containing just the block\n * - file has the markers → replace ONLY the content between them (update in place)\n * - anything else → PREFIX the block; everything already there is preserved\n * (a leading BOM stays at byte 0)\n *\n * faf replaces only text it can prove it wrote: what sits between its own\n * marker lines. A file with no marker lines is never reclaimed, whatever it\n * starts or ends with. Idempotent: re-running updates the managed block in\n * place and never duplicates it. Enhance, never replace.\n *\n * The file is resolved inside its project first: a link that leads outside,\n * a dangling link, a link to a file with another name (CLAUDE.md → README.md)\n * and anything in `.git` are refused (SafePathError) and nothing is written; a\n * link to a file of the same name, or between AI context files (CLAUDE.md →\n * AGENTS.md), is written through and stays a link. A file that is not UTF-8\n * is refused and left as it is. The write is atomic — a failure leaves the\n * original exactly as it was — and is refused if the file changed on disk\n * after faf read it. A block faf cannot place where its next run finds it\n * again is refused too (SafePathError `unplaceable`), and nothing is written.\n */\nexport function injectFafBlock(\n path: string,\n block: string,\n start: string = FAF_START,\n end: string = FAF_END,\n opts: InjectOptions = {},\n): void {\n const wrapped = wrapFafBlock(block, start, end);\n const full = resolve(path);\n const root = opts.root ?? dirname(full);\n const target = resolveInside(root, full);\n const existing = readIfPresent(target);\n safeWriteFile(target, withFafBlock(existing, wrapped, start, end, full), { root, expect: existing });\n}\n\n/** faf's old metastamp line — the two-line `<!-- faf: … -->` stamp older faf\n * versions put at the top of CLAUDE.md and friends, with no markers. */\nconst LEGACY_STAMP = '<!-- faf:';\n\n/** How the note names the region an old START line sits in. */\nfunction regionName(hidden: HiddenIn): string {\n if (hidden === 'code fence') {return 'a code fence';}\n if (hidden === 'indented code') {return 'an indented code block';}\n if (hidden === 'comment') {return 'an HTML comment';}\n return hidden === 'html' ? 'an HTML block' : `a ${hidden} block`;\n}\n\n/** The region a whole-line START of `text` sits in — in either reading — or\n * null when every START line is shown as text (or there is none). `'too\n * deep'` when a whole-line START sits past the point where the file nests\n * more than MAX_OPEN_CONTAINERS containers (faf stopped reading there). */\nfunction hiddenStart(text: string, start: string): HiddenIn | 'too deep' | null {\n const readers = [new BlockReader(true), new BlockReader(false)];\n let deep = false;\n for (const { content } of scanLines(text)) {\n if (deep) {\n if (content === start) {return 'too deep';}\n continue;\n }\n const [a, b] = readers.map(r => r.line(content));\n deep = readers[0].tooDeep;\n const hidden = a ?? b;\n if (content === start && (deep || hidden !== null)) {return deep ? 'too deep' : hidden;}\n }\n return null;\n}\n\n/** Whether a whole-line START or END of `text` is shown as text in at least\n * one reading. Only asked once {@link findFafBlock} has found no block, so a\n * marker line still shown there is one faf could not pair up: a truncated\n * block an older faf left behind, or a pair the two readings disagree about.\n * Markers are compared exactly as findFafBlock compares them — whole line,\n * column 0, trailing whitespace making it text. Past the point where the\n * file nests more than MAX_OPEN_CONTAINERS containers faf stopped reading,\n * so nothing beyond it counts (that region has its own note). */\nfunction visibleOrphanMarker(text: string, start: string, end: string): boolean {\n const readers = [new BlockReader(true), new BlockReader(false)];\n for (const { content } of scanLines(text)) {\n const hidden = readers.map(r => r.line(content));\n if (readers[0].tooDeep) {return false;}\n if ((content === start || content === end) && hidden.some(h => h === null)) {return true;}\n }\n return false;\n}\n\n/**\n * The one line the CLI prints when faf's block goes on top of a file that has\n * no block of its own but holds older faf text — or null:\n * - the file's first line is faf's old metastamp (`<!-- faf: … -->`): faf\n * never reclaims such a file (it cannot prove it wrote the text), so the\n * old faf text stays below the new block;\n * - a whole-line START marker sits inside a code fence, a raw HTML block\n * or an HTML comment (in either reading — see {@link findFafBlock}): the\n * older block there is an example to faf, and stays below the new one;\n * - a whole-line START marker sits past more than MAX_OPEN_CONTAINERS\n * nested lists or quotes: faf did not read that far, and the older block\n * stays below the new one;\n * - a whole-line START or END marker is shown as text with no matching pair\n * — a block an older faf truncated, or a pair the two readings read\n * differently. faf cannot prove where that block ended, so it is left\n * exactly as it is and the new block goes on top. Without this line the\n * file is the one case in this family that is prefixed in silence: it\n * carries faf's own marker text, so it looks most like faf's to a reader\n * and least like it to faf.\n * `label` names the file (`CLAUDE.md`). `existing` is the file's text before\n * the write (null when there was none). faf-mcp and claude-faf-mcp print the\n * same line through this export.\n */\nexport function legacyStampNote(\n label: string,\n existing: string | null,\n start: string = FAF_START,\n end: string = FAF_END,\n): string | null {\n if (existing === null || findFafBlock(existing, start, end)) {return null;}\n const first = bareLine(linesWithEnds(existing)[0] ?? '');\n if (first.startsWith(LEGACY_STAMP) && first !== start && first !== end) {\n return `${label}: faf's block is now on top; the old faf text below it is left as you had it — delete it by hand if you no longer want it.`;\n }\n const hidden = hiddenStart(existing, start);\n if (hidden === 'too deep') {\n return `${label}: faf's block is now on top; the file nests more than ${MAX_OPEN_CONTAINERS} lists or quotes before an older faf block, so faf did not read that far — the older block is left as you had it; delete it by hand if you no longer want it.`;\n }\n if (hidden !== null) {\n return `${label}: faf's block is now on top; an older faf block below sits inside ${regionName(hidden)} and is left as you had it — delete it by hand if you no longer want it.`;\n }\n if (visibleOrphanMarker(existing, start, end)) {\n return `${label}: faf's block is now on top; an older faf marker line below it has no matching pair, so the text there is left as you had it — delete it by hand if you no longer want it.`;\n }\n return null;\n}\n\n/** {@link legacyStampNote} for the file at `path`, read the way\n * injectFafBlock reads it — before the write. Null when there is no note, or\n * when the file cannot be read (the write itself then says why). */\nexport function legacyStampNoteAt(\n path: string,\n label: string,\n start: string = FAF_START,\n end: string = FAF_END,\n opts: InjectOptions = {},\n): string | null {\n try {\n const full = resolve(path);\n return legacyStampNote(label, readIfPresent(resolveInside(opts.root ?? dirname(full), full)), start, end);\n } catch {\n return null;\n }\n}\n",
131
131
  "/**\n * CommonMark's block structure, line by line — just enough of it to say which\n * lines Markdown shows as code, or hides in a raw HTML block or a multi-line\n * comment. faf uses it to tell its own marker lines from marker examples.\n *\n * The algorithm is the reference implementation's (commonmark.js, spec 0.31):\n * each line first continues the open containers (block quotes, list items —\n * a list item's lines sit at its content column, a tab after the marker\n * advancing to the next multiple of 4), then may open new blocks, then is\n * added to the innermost open block or continues a paragraph lazily. Only\n * what decides block structure is kept: no inline parsing, no link reference\n * definitions, no tables.\n *\n * A reader made with `containers: false` reads every line at column 0 with no\n * block quotes and no list items — the plain reading a text editor, an older\n * faf or another tool may apply. faf takes a block as its own only when both\n * readings agree (see inject.ts).\n *\n * What a line counts as hidden in:\n * - fenced code (its opening and closing lines included) and indented code;\n * - an HTML block of types 1-5 — <pre>/<script>/<style>/<textarea> up to the\n * closing tag, a comment up to `-->`, <?…?>, <!X…>, <![CDATA[…]]> — except\n * a comment that opens and closes on the one line (faf's own marker\n * lines are such comments);\n * - not an HTML block of types 6 or 7 (<div>, <details>, any lone tag): a\n * comment inside raw HTML is still a comment. No fence or other block\n * opens inside one until a blank line ends it.\n *\n * Speed: each line costs time in proportion to its length, however deep the\n * nesting — the reader never re-reads the rest of a line per nesting level.\n * Past MAX_OPEN_CONTAINERS open block quotes, lists and list items the reader\n * stops reading (`tooDeep`): faf cannot say for sure where such a file's\n * regions are, so the file is the user's — faf's block goes on top and every\n * byte stays.\n */\n\nconst CODE_INDENT = 4;\n\n/** More open block quotes, lists and list items than this, and a reader stops\n * reading (see {@link BlockReader.tooDeep}). */\nexport const MAX_OPEN_CONTAINERS = 100;\n\nconst TAGNAME = '[A-Za-z][A-Za-z0-9-]*';\nconst ATTRIBUTENAME = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nconst ATTRIBUTEVALUE = '(?:[^\"\\'=<>`\\\\x00-\\\\x20]+|\\'[^\\']*\\'|\"[^\"]*\")';\nconst ATTRIBUTE = `(?:\\\\s+${ATTRIBUTENAME}(?:\\\\s*=\\\\s*${ATTRIBUTEVALUE})?)`;\nconst OPENTAG = `<${TAGNAME}${ATTRIBUTE}*\\\\s*/?>`;\nconst CLOSETAG = `</${TAGNAME}\\\\s*>`;\nconst BLOCK_NAMES =\n 'address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|' +\n 'fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|' +\n 'menuitem|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul';\n\n/** HTML block start conditions, types 1-7 (index 0 is type 1). */\nconst HTML_OPEN: readonly RegExp[] = [\n /^<(script|pre|style|textarea)(?=\\s|>|$)/i,\n /^<!--/,\n /^<\\?/,\n /^<![A-Za-z]/,\n /^<!\\[CDATA\\[/,\n new RegExp(`^</?(?:${BLOCK_NAMES})(?=\\\\s|/?>|$)`, 'i'),\n new RegExp(`^(?:${OPENTAG}|${CLOSETAG})\\\\s*$`, 'i'),\n];\n/** End conditions of HTML block types 1-5 (types 6 and 7 end at a blank line). */\nconst HTML_CLOSE: readonly RegExp[] = [/<\\/(?:script|pre|style|textarea)>/i, /-->/, /\\?>/, />/, /\\]\\]>/];\n/** The line that meets each end condition of types 1-5 (type 1 names its tag). */\nconst HTML_CLOSER: readonly string[] = ['', '-->', '?>', '>', ']]>'];\n\n// Line rules, matched where the reader stands (sticky: no copy of the rest of the line).\nconst MAYBE_SPECIAL = /[#`~*+_=<>0-9-]/;\nconst ORDERED = /(\\d{1,9})([.)])/y;\nconst ATX_HEADING = /#{1,6}(?:[ \\t]+|$)/y;\nconst FENCE_OPEN = /`{3,}(?!.*`)|~{3,}/y;\nconst FENCE_CLOSE = /(?:`{3,}|~{3,})(?=[ \\t]*$)/y;\nconst SETEXT_LINE = /(?:=+|-+)[ \\t]*$/y;\nconst NON_SPACE = /[^ \\t\\f\\v\\r\\n]/;\n\n/** `re` (sticky) matched at `pos` of `text`, or null. */\nfunction matchAt(re: RegExp, text: string, pos: number): RegExpExecArray | null {\n re.lastIndex = pos;\n return re.exec(text);\n}\n\nconst isContainer = (kind: Kind): boolean => kind === 'quote' || kind === 'list' || kind === 'item';\n\n/** For each position of `ln`: 1 when the rest of the line from there is a\n * thematic break — three or more of one of `*`, `-`, `_`, starting there,\n * with only spaces and tabs between and after them. One pass from the end,\n * so the check costs the same however often a line asks it. */\nfunction thematicBreaks(ln: string): Uint8Array {\n const ok = new Uint8Array(ln.length);\n const marks = '*-_';\n const count = [0, 0, 0];\n const pure = [true, true, true]; // only this mark, spaces and tabs after i\n for (let i = ln.length - 1; i >= 0; i--) {\n const c = ln[i];\n const space = c === ' ' || c === '\\t';\n for (let k = 0; k < 3; k++) {\n if (c === marks[k]) {count[k]++;} else if (!space) {pure[k] = false;}\n }\n const k = marks.indexOf(c);\n ok[i] = k >= 0 && pure[k] && count[k] >= 3 ? 1 : 0;\n }\n return ok;\n}\n\ninterface ListData {\n bullet: string | null;\n delimiter: string | null;\n markerOffset: number;\n padding: number;\n}\n\ninterface Fence {\n char: string;\n len: number;\n offset: number;\n}\n\ntype Block =\n | { kind: 'document' | 'quote' | 'paragraph' | 'heading' | 'break'; hasChild?: boolean }\n | { kind: 'list'; list: ListData; hasChild?: boolean }\n | { kind: 'item'; list: ListData; hasChild?: boolean }\n | { kind: 'code'; fence: Fence | null; hasChild?: boolean }\n | { kind: 'html'; type: number; tag: string; hasChild?: boolean };\n\ntype Kind = Block['kind'];\n\n/** What hides a line: its region, as faf names it to the user. */\nexport type HiddenIn = 'code fence' | 'indented code' | 'html' | 'comment' | `<${string}>`;\n\n/** 0: no; 1: yes, a container; 2: yes, and the line is done with (a leaf). */\ntype Step = 0 | 1 | 2;\n\nconst isSpaceOrTab = (c: string | undefined): boolean => c === ' ' || c === '\\t';\n\nfunction canContain(parent: Kind, child: Kind): boolean {\n if (parent === 'document' || parent === 'quote' || parent === 'item') {return child !== 'item';}\n return parent === 'list' && child === 'item';\n}\n\nconst acceptsLines = (kind: Kind): boolean => kind === 'paragraph' || kind === 'code' || kind === 'html';\n\nfunction copyBlock(b: Block): Block {\n if (b.kind === 'list' || b.kind === 'item') {return { ...b, list: { ...b.list } };}\n if (b.kind === 'code') {return { ...b, fence: b.fence && { ...b.fence } };}\n return { ...b };\n}\n\n/** Feeds a text line by line (terminators removed) and says which lines are hidden. */\nexport class BlockReader {\n private stack: Block[] = [{ kind: 'document' }];\n // The line being read, and where the reader stands in it.\n private ln = '';\n private offset = 0;\n private column = 0;\n private nextNonspace = 0;\n private nextNonspaceColumn = 0;\n private indent = 0;\n private indented = false;\n private blank = false;\n private allClosed = true;\n private matched = 0;\n private htmlStarted = false;\n private hiddenIn: HiddenIn | null = null;\n /** Where the last whitespace scan of this line started (-1: none yet). */\n private scannedFrom = -1;\n /** Per line, lazily: 1 where the rest of the line is a thematic break. */\n private breaks: Uint8Array | null = null;\n private deep = false;\n /** With a limit (see {@link overflowAt}): open containers allowed, and\n * where the line first opened one past it (-1: nowhere yet). */\n private limit = -1;\n private overflow = -1;\n private readonly starts: ReadonlyArray<(container: Block) => Step>;\n\n /** `containers: false` — the plain column-0 reading: no block quotes, no list items. */\n constructor(private readonly containers: boolean = true) {\n this.starts = [\n () => this.startQuote(),\n () => this.startHeading(),\n () => this.startFence(),\n c => this.startHtml(c),\n c => this.startSetext(c),\n () => this.startBreak(),\n c => this.startItem(c),\n () => this.startIndentedCode(),\n ];\n }\n\n /** An independent copy, for trying lines out. */\n clone(): BlockReader {\n const copy = new BlockReader(this.containers);\n copy.stack = this.stack.map(copyBlock);\n copy.deep = this.deep;\n return copy;\n }\n\n /**\n * Where in `ln` a reader in this state would open a block quote, list or\n * list item past `limit` open ones — the offset of that quote's `>` or that\n * item's marker — or -1 when the line leaves at most `limit` open. This\n * reader does not move: a copy reads the line.\n */\n overflowAt(ln: string, limit: number): number {\n const probe = this.clone();\n probe.limit = limit;\n probe.line(ln);\n return probe.overflow;\n }\n\n /** True once more than MAX_OPEN_CONTAINERS block quotes, lists and list\n * items were open at once. The reader then stops reading: what it says\n * about that line and every later one means nothing, and a caller treats\n * the file as one it cannot read for sure. */\n get tooDeep(): boolean {\n return this.deep;\n }\n\n /** Read one line (no terminator). Returns what hides it, or null when it is shown as text. */\n line(ln: string): HiddenIn | null {\n if (this.deep) {return null;}\n this.ln = ln;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.htmlStarted = false;\n this.hiddenIn = null;\n this.scannedFrom = -1;\n this.breaks = null;\n const container = this.continueContainers();\n if (container < 0) {return this.hiddenIn;} // a closing fence: the line is its last\n const leaf = this.openBlocks(container);\n if (this.deep) {return null;}\n // A lazy paragraph line (a list item's or a quote's paragraph, run on) is text.\n if (!this.allClosed && !this.blank && this.tip.kind === 'paragraph') {return null;}\n this.closeUnmatched();\n this.addText(leaf);\n return this.hiddenIn;\n }\n\n /** The line that would close the region a column-0 line would now be hidden\n * in (a fence or an HTML block of types 1-5 at the top level), or null. */\n closer(): string | null {\n if (this.stack.length !== 2) {return null;}\n const b = this.stack[1];\n if (b.kind === 'code') {return b.fence ? b.fence.char.repeat(b.fence.len) : null;}\n if (b.kind !== 'html' || b.type > 5) {return null;}\n return b.type === 1 ? `</${b.tag}>` : HTML_CLOSER[b.type - 1];\n }\n\n private get tip(): Block {\n return this.stack[this.stack.length - 1];\n }\n\n /** Step 1: the open containers the line continues. Returns the index of the\n * last one it continues, or -1 when it closed a fence. */\n private continueContainers(): number {\n const oldTip = this.stack.length - 1;\n let container = 0;\n while (container < oldTip) {\n this.findNextNonspace();\n const res = this.continues(this.stack[container + 1], container + 1);\n if (res === 2) {return -1;}\n if (res === 1) {break;}\n container++;\n }\n this.allClosed = container === oldTip;\n this.matched = container;\n return container;\n }\n\n /** Step 2: the blocks the line opens, from the container at `index`. Returns the block the rest of the line goes to. */\n private openBlocks(index: number): Block {\n let container = this.stack[index];\n let leaf = container.kind !== 'paragraph' && acceptsLines(container.kind);\n while (!leaf && !this.deep) {\n this.findNextNonspace();\n const at = this.nextNonspace;\n if (!this.indented && !MAYBE_SPECIAL.test(this.ln.charAt(at))) {break;}\n let res: Step = 0;\n for (const start of this.starts) {\n res = start(container);\n if (res !== 0) {break;}\n }\n if (res === 0) {break;}\n this.noteOverflow(at, res);\n container = this.tip;\n leaf = res === 2;\n }\n if (!leaf) {this.advanceNextNonspace();}\n return container;\n }\n\n /** A block just opened at `at` (`res` 1: a container): with a limit set,\n * remember the first place the line went past it (below the document\n * only containers are open when a container is added). */\n private noteOverflow(at: number, res: Step): void {\n if (res === 1 && this.limit >= 0 && this.overflow < 0 && this.stack.length - 1 > this.limit) {this.overflow = at;}\n }\n\n /** Step 3: the rest of the line goes to `block`. */\n private addText(block: Block): void {\n if (block.kind === 'code') {\n this.hiddenIn = block.fence ? 'code fence' : 'indented code';\n } else if (block.kind === 'html') {\n this.addHtmlLine(block);\n } else if (!acceptsLines(block.kind) && this.offset < this.ln.length && !this.blank) {\n this.addChild({ kind: 'paragraph' });\n }\n }\n\n private addHtmlLine(block: Extract<Block, { kind: 'html' }>): void {\n if (block.type > 5) {return;}\n const closes = HTML_CLOSE[block.type - 1].test(this.ln.slice(this.offset));\n const oneLineComment = this.htmlStarted && block.type === 2 && closes;\n if (!oneLineComment) {this.hiddenIn = block.type === 1 ? `<${block.tag}>` : block.type === 2 ? 'comment' : 'html';}\n if (closes) {this.stack.pop();}\n }\n\n /** Does the line continue the open block `b` (at `index`)? 0 yes, 1 no, 2 it closed a fence. */\n private continues(b: Block, index: number): Step {\n switch (b.kind) {\n case 'quote':\n return this.continueQuote();\n case 'item':\n return this.continueItem(b);\n case 'code':\n return b.fence ? this.continueFence(b.fence, index) : this.continueIndentedCode();\n default:\n return this.continueOther(b);\n }\n }\n\n /** The document and a list always continue; a heading or a break never\n * does; a paragraph and an HTML block of type 6 or 7 end at a blank line. */\n private continueOther(b: Block): Step {\n if (b.kind === 'heading' || b.kind === 'break') {return 1;}\n const endsAtBlank = b.kind === 'paragraph' || (b.kind === 'html' && b.type >= 6);\n return endsAtBlank && this.blank ? 1 : 0;\n }\n\n private continueQuote(): Step {\n if (this.indented || this.ch !== '>') {return 1;}\n this.advanceNextNonspace();\n this.advanceOffset(1, false);\n if (isSpaceOrTab(this.ln[this.offset])) {this.advanceOffset(1, true);}\n return 0;\n }\n\n private continueItem(b: Extract<Block, { kind: 'item' }>): Step {\n const width = b.list.markerOffset + b.list.padding;\n if (this.blank) {\n if (!b.hasChild) {return 1;} // a blank line after an empty list item ends it\n this.advanceNextNonspace();\n } else if (this.indent >= width) {\n this.advanceOffset(width, true);\n } else {\n return 1;\n }\n return 0;\n }\n\n private continueFence(fence: Fence, index: number): Step {\n const m = this.indent <= 3 && this.ch === fence.char ? matchAt(FENCE_CLOSE, this.ln, this.nextNonspace) : null;\n if (m && m[0].length >= fence.len) {\n this.stack.length = index;\n this.hiddenIn = 'code fence';\n return 2;\n }\n for (let i = fence.offset; i > 0 && isSpaceOrTab(this.ln[this.offset]); i--) {this.advanceOffset(1, true);}\n return 0;\n }\n\n private continueIndentedCode(): Step {\n if (this.indent >= CODE_INDENT) {\n this.advanceOffset(CODE_INDENT, true);\n } else if (this.blank) {\n this.advanceNextNonspace();\n } else {\n return 1;\n }\n return 0;\n }\n\n /** The character at the next non-space position ('' at the line's end). */\n private get ch(): string {\n return this.ln.charAt(this.nextNonspace);\n }\n\n /** True when the rest of the line, from the next non-space position, is a\n * thematic break (see {@link thematicBreaks}; worked out once per line). */\n private breakAhead(): boolean {\n this.breaks ??= thematicBreaks(this.ln);\n return this.breaks[this.nextNonspace] === 1;\n }\n\n private startQuote(): Step {\n if (!this.containers || this.indented || this.ch !== '>') {return 0;}\n this.advanceNextNonspace();\n this.advanceOffset(1, false);\n if (isSpaceOrTab(this.ln[this.offset])) {this.advanceOffset(1, true);}\n this.closeUnmatched();\n this.addChild({ kind: 'quote' });\n return 1;\n }\n\n private startHeading(): Step {\n if (this.indented || this.ch !== '#' || !matchAt(ATX_HEADING, this.ln, this.nextNonspace)) {return 0;}\n this.closeUnmatched();\n this.addChild({ kind: 'heading' });\n this.offset = this.ln.length;\n return 2;\n }\n\n private startFence(): Step {\n const c = this.ch;\n const m = this.indented || (c !== '`' && c !== '~') ? null : matchAt(FENCE_OPEN, this.ln, this.nextNonspace);\n if (!m) {return 0;}\n this.closeUnmatched();\n this.addChild({ kind: 'code', fence: { char: m[0][0], len: m[0].length, offset: this.indent } });\n this.advanceNextNonspace();\n this.advanceOffset(m[0].length, false);\n return 2;\n }\n\n private startHtml(container: Block): Step {\n if (this.indented || this.ch !== '<') {return 0;}\n const lazy = !this.allClosed && !this.blank && this.tip.kind === 'paragraph';\n const type7 = container.kind !== 'paragraph' && !lazy; // type 7 cannot interrupt a paragraph\n const rest = this.ln.slice(this.nextNonspace); // once: an HTML start ends the line's block openers\n for (let type = 1; type <= (type7 ? 7 : 6); type++) {\n const m = HTML_OPEN[type - 1].exec(rest);\n if (m) {\n this.closeUnmatched();\n this.addChild({ kind: 'html', type, tag: type === 1 ? m[1].toLowerCase() : '' });\n this.htmlStarted = true;\n return 2;\n }\n }\n return 0;\n }\n\n private startSetext(container: Block): Step {\n const c = this.ch;\n if (this.indented || container.kind !== 'paragraph' || (c !== '=' && c !== '-') || !matchAt(SETEXT_LINE, this.ln, this.nextNonspace)) {return 0;}\n this.closeUnmatched();\n this.stack[this.stack.length - 1] = { kind: 'heading' }; // the paragraph becomes a heading\n this.offset = this.ln.length;\n return 2;\n }\n\n private startBreak(): Step {\n if (this.indented || !this.breakAhead()) {return 0;}\n this.closeUnmatched();\n this.addChild({ kind: 'break' });\n this.offset = this.ln.length;\n return 2;\n }\n\n private startItem(container: Block): Step {\n if (!this.containers || (this.indented && container.kind !== 'list')) {return 0;}\n const data = this.listMarker(container);\n if (!data) {return 0;}\n this.closeUnmatched();\n const tip = this.tip;\n if (tip.kind !== 'list' || tip.list.bullet !== data.bullet || tip.list.delimiter !== data.delimiter) {\n this.addChild({ kind: 'list', list: data });\n }\n this.addChild({ kind: 'item', list: data, hasChild: false });\n return 1;\n }\n\n private startIndentedCode(): Step {\n if (!this.indented || this.tip.kind === 'paragraph' || this.blank) {return 0;}\n this.advanceOffset(CODE_INDENT, true);\n this.closeUnmatched();\n this.addChild({ kind: 'code', fence: null });\n return 2;\n }\n\n /** The list marker at the reader's position: its kind, where it sits and\n * its content column (padding); null when there is none. */\n private listMarker(container: Block): ListData | null {\n if (this.indent >= 4) {return null;}\n const marker = this.markerAt(container);\n if (!marker) {return null;}\n const markerOffset = this.indent;\n this.advanceNextNonspace();\n this.advanceOffset(marker.width, true);\n return { ...marker.kind, markerOffset, padding: this.paddingAfter(marker.width) };\n }\n\n /** A bullet or an ordered marker followed by a space, a tab or the line's end. */\n private markerAt(container: Block): { width: number; kind: Pick<ListData, 'bullet' | 'delimiter'> } | null {\n const inParagraph = container.kind === 'paragraph';\n const found = this.markerKind(inParagraph);\n if (!found) {return null;}\n const after = this.ln[this.nextNonspace + found.width];\n if (!(after === undefined || isSpaceOrTab(after))) {return null;}\n // A list item that interrupts a paragraph cannot start with a blank line.\n if (inParagraph && !NON_SPACE.test(this.ln.slice(this.nextNonspace + found.width))) {return null;}\n return found;\n }\n\n private markerKind(inParagraph: boolean): { width: number; kind: Pick<ListData, 'bullet' | 'delimiter'> } | null {\n const c = this.ch;\n if (c === '*' || c === '+' || c === '-') {return { width: 1, kind: { bullet: c, delimiter: null } };}\n const ordered = c >= '0' && c <= '9' ? matchAt(ORDERED, this.ln, this.nextNonspace) : null;\n // An ordered list interrupts a paragraph only when it starts at 1.\n if (!ordered || (inParagraph && Number(ordered[1]) !== 1)) {return null;}\n return { width: ordered[0].length, kind: { bullet: null, delimiter: ordered[2] } };\n }\n\n /** The columns from the marker to the item's content: 1-4 spaces (or tabs\n * to that many columns) after it; with 5 or more, or none (a blank item),\n * the content starts one column after the marker. */\n private paddingAfter(width: number): number {\n const startCol = this.column;\n const startOffset = this.offset;\n do {\n this.advanceOffset(1, true);\n } while (this.column - startCol < 5 && isSpaceOrTab(this.ln[this.offset]));\n const spaces = this.column - startCol;\n if (spaces >= 1 && spaces < 5 && this.ln[this.offset] !== undefined) {return width + spaces;}\n this.column = startCol;\n this.offset = startOffset;\n if (isSpaceOrTab(this.ln[this.offset])) {this.advanceOffset(1, true);}\n return width + 1;\n }\n\n private addChild(block: Block): void {\n while (!canContain(this.tip.kind, block.kind)) {this.stack.pop();}\n this.tip.hasChild = true;\n this.stack.push(block);\n // Below the document only containers are open when a container is added\n // (a leaf is always the tip, and it was closed to make room).\n if (isContainer(block.kind) && this.stack.length - 1 > MAX_OPEN_CONTAINERS) {this.deep = true;}\n }\n\n private closeUnmatched(): void {\n if (!this.allClosed) {\n this.stack.length = this.matched + 1;\n this.allClosed = true;\n }\n }\n\n /** The next non-space position from where the reader stands, its column,\n * and the indent to it. A second call from inside the same run of spaces\n * and tabs reuses the first scan (the column a run ends at does not depend\n * on where in the run the scan starts), so a line is scanned once however\n * many containers it continues. */\n private findNextNonspace(): void {\n const ln = this.ln;\n let i = this.offset;\n let cols = this.column;\n if (this.scannedFrom !== -1 && this.offset >= this.scannedFrom && this.offset <= this.nextNonspace) {\n i = this.nextNonspace;\n cols = this.nextNonspaceColumn;\n } else {\n this.scannedFrom = this.offset;\n for (; i < ln.length; i++) {\n if (ln[i] === ' ') {\n cols++;\n } else if (ln[i] === '\\t') {\n cols += 4 - (cols % 4);\n } else {\n break;\n }\n }\n }\n this.blank = i >= ln.length;\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = cols - this.column;\n this.indented = this.indent >= CODE_INDENT;\n }\n\n private advanceNextNonspace(): void {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n }\n\n /** Move `count` characters on (or, with `columns`, `count` columns: a tab may be taken in part). */\n private advanceOffset(count: number, columns: boolean): void {\n let left = count;\n while (left > 0 && this.offset < this.ln.length) {\n if (this.ln[this.offset] !== '\\t') {\n this.offset++;\n this.column++;\n left--;\n continue;\n }\n const toTab = 4 - (this.column % 4);\n const partial = columns && toTab > left;\n this.column += partial ? left : toTab;\n this.offset += partial ? 0 : 1;\n left -= columns ? Math.min(toTab, left) : 1;\n }\n }\n}\n",
132
132
  "/**\n * Shared label formatting for the AI-context emitters (CLAUDE.md, AGENTS.md,\n * .github/copilot-instructions.md). ONE acronym-aware Title-Caser so `api_type`\n * renders \"API Type\" everywhere — not \"Api Type\" in one file and a raw\n * `api_type` key in another. Unified 2026-06-25 (faf-cli 6.15.1).\n *\n * Labels are registry-first: `slotLabel()` reads the canonical label from the\n * slot registry (\"know your stack\"); the acronym-aware `titleLabel()` is only a\n * fallback for off-registry freeform keys.\n */\n\nimport { SLOT_BY_PATH } from '../core/slots.js';\n\n/** All-caps acronym tokens that stay upper-cased inside a Title-Cased label. */\nexport const ACRONYMS = new Set([\n 'API', 'CI', 'CD', 'MCP', 'CLI', 'SDK', 'UI', 'UX', 'AI', 'ML', 'DB', 'ORM',\n 'OS', 'HTTP', 'HTTPS', 'REST', 'RPC', 'JSON', 'YAML', 'XML', 'SQL', 'CSS',\n 'HTML', 'AWS', 'GCP', 'CDN', 'DNS', 'JWT', 'ID', 'IP', 'URL', 'URI', 'TS', 'JS',\n]);\n\n/**\n * snake_case → Title Case, acronym-aware.\n * `api_type` → \"API Type\", `mcp_sdk` → \"MCP SDK\", `runtime` → \"Runtime\".\n */\nexport function titleLabel(key: string): string {\n return key\n .split('_')\n .map((w) => {\n if (!w) {return w;}\n const up = w.toUpperCase();\n return ACRONYMS.has(up) ? up : w.charAt(0).toUpperCase() + w.slice(1);\n })\n .join(' ');\n}\n\n/** A slot value that carries real content (not empty, not slotignored). */\nexport function filled(v: unknown): v is string {\n return typeof v === 'string' && v.trim() !== '' && v.trim() !== 'slotignored';\n}\n\n/**\n * The canonical display label for a .faf slot path, sourced from the slot\n * registry (\"know your stack\") — `stack.cicd` → \"CI/CD\", `stack.api_type` → \"API\".\n * Resolves legacy OR canonical paths (SLOT_BY_PATH is dual-keyed). Falls back to\n * the acronym-aware Title-Caser for off-registry freeform keys.\n */\nexport function slotLabel(path: string): string {\n const slot = SLOT_BY_PATH.get(path);\n if (slot?.label) {return slot.label;}\n const key = path.includes('.') ? path.slice(path.lastIndexOf('.') + 1) : path;\n return titleLabel(key);\n}\n",
@@ -137,7 +137,7 @@
137
137
  "/**\n * Claude Code auto-memory — the MEMORY.md Claude Code loads at the start of a\n * session: `<config>/projects/<project-id>/memory/MEMORY.md`.\n *\n * Moved here from claude-faf-mcp (its tri-sync writer and path resolver) so\n * every FAF tool shares one copy, with what the audit found fixed.\n *\n * WHERE the file is — Claude Code's own rule (mirrored from Claude Code 2.1.x):\n * - Project root: the canonical git root of the folder — the first folder at\n * or above it that has a `.git` (a folder or a file). A linked worktree\n * resolves to its main checkout, so every worktree shares one memory. A\n * folder that is not in git is its own root.\n * - Project id: that path with every character outside [a-zA-Z0-9] replaced\n * by `-` (so `/home/me/my_app` → `-home-me-my-app`). An id longer than\n * 200 characters is cut to 200 and gets `-` plus a base-36 hash of the\n * full path.\n * - Base: CLAUDE_CODE_REMOTE_MEMORY_DIR when set, else Claude's config\n * folder: CLAUDE_CONFIG_DIR, else ~/.claude.\n * Not read: Claude Code's `autoMemoryDirectory` setting (or any other\n * override of the whole memory folder). When one is set, pass `memoryDir`.\n *\n * WHAT faf writes — one managed block (the same markers and injector as\n * CLAUDE.md). Everything else in the file is Claude's and is kept byte for\n * byte, CRLF line ends and a BOM included:\n * - no MEMORY.md → the file is created with the block\n * - faf's block is there → only the text between its marker lines changes\n * - claude-faf-mcp's earlier section (its `# Project Context (from\n * project.faf)` line through its `*This section is managed by tri-sync.`\n * line, both whole lines) → replaced in place by the block, once\n * - anything else → the block goes on top; nothing is removed\n * Markers match whole lines only (faf's own exactly), never substrings, and\n * only outside fenced code, raw HTML blocks and multi-line HTML comments, as\n * both CommonMark and a plain column-0 reading see them (a note that quotes\n * the block or the old section is an example, not a marker; see inject.ts).\n * When the block goes on top of a file whose older faf block sits in such a\n * region, the result's warnings say so in one line. Only a missing file reads\n * as \"no file\": any other read error is thrown and nothing is written, and a\n * file that is not UTF-8 is refused. The write is atomic, is refused if the\n * file changed on disk after faf read it, and a run that changes nothing\n * writes nothing.\n */\n\nimport { existsSync, lstatSync, readFileSync, realpathSync, statSync } from 'fs';\nimport { homedir } from 'os';\nimport { basename, dirname, join, resolve } from 'path';\nimport type { FafData } from '../core/types.js';\nimport { FAF_CONTEXT_FILES, makeDirInside, resolveInside, safeWriteFile } from '../core/safe-write.js';\nimport {\n findFafBlock,\n findMarkedRange,\n legacyStampNote,\n placeFafBlock,\n readIfPresent,\n withFafBlock,\n wrapFafBlock,\n} from './inject.js';\nimport { filled, slotLabel } from './labels.js';\nimport { commandOnly } from './command-note.js';\n\n/** Claude Code cuts a project id at this length and adds a hash. */\nconst MAX_ID = 200;\n/** Claude Code loads this many lines of MEMORY.md into a session. */\nconst LOADED_LINES = 200;\n/** Longest list faf puts in the block (commands, key files), so the block\n * stays short and leaves Claude's own notes inside the loaded lines. */\nconst LIST_CAP = 12;\n\n/** claude-faf-mcp's earlier section: its heading line and its closing line. */\nconst LEGACY_START = '# Project Context (from project.faf)';\nconst LEGACY_END_PREFIX = '*This section is managed by tri-sync.';\n\nexport interface ClaudeMemoryOptions {\n /** Claude Code's config folder. Default: CLAUDE_CODE_REMOTE_MEMORY_DIR,\n * else CLAUDE_CONFIG_DIR, else ~/.claude. */\n configDir?: string;\n /** The memory folder itself, when you know better than the rule (Claude\n * Code's `autoMemoryDirectory` setting, say). Skips the resolver. */\n memoryDir?: string;\n}\n\n/** What `writeClaudeMemory` did. */\nexport type ClaudeMemoryAction = 'created' | 'updated' | 'migrated' | 'added' | 'unchanged';\n\nexport interface ClaudeMemoryResult {\n /** The MEMORY.md (its real path). */\n path: string;\n /**\n * - `created` there was no MEMORY.md; it now holds the block\n * - `updated` faf's block was replaced in place\n * - `migrated` claude-faf-mcp's earlier section was replaced by the block\n * - `added` the file had neither; the block went on top\n * - `unchanged` the block was already exactly this; nothing was written\n */\n action: ClaudeMemoryAction;\n /** False when nothing was written (`unchanged`). */\n written: boolean;\n /** Every byte outside faf's block is still in the file, in place — checked\n * by reading the file back after the write. */\n preserved: boolean;\n /** Lines in the file now. */\n lines: number;\n /** Plain-words notes (e.g. lines past the 200 Claude Code loads). */\n warnings: string[];\n}\n\n/** What is in the MEMORY.md Claude Code loads for a project (read only). */\nexport interface ClaudeMemoryStatus {\n /** The MEMORY.md path (whether or not it exists). */\n path: string;\n exists: boolean;\n /** Lines in the file. */\n lines: number;\n /** faf's block is in the file. */\n hasBlock: boolean;\n /** Lines in faf's block, its marker lines included (0 when there is none). */\n blockLines: number;\n /** claude-faf-mcp's earlier tri-sync section is in the file (the next write replaces it). */\n hasLegacySection: boolean;\n /** Non-blank lines outside faf's block: Claude's own notes. */\n otherLines: number;\n /** Plain-words notes (e.g. lines past the 200 Claude Code loads). */\n warnings: string[];\n}\n\n/** Claude Code's 32-bit string hash (over UTF-16 code units). */\nfunction claudeHash(s: string): number {\n let h = 0;\n for (let i = 0; i < s.length; i++) {\n h = ((h << 5) - h + s.charCodeAt(i)) | 0;\n }\n return h;\n}\n\n/**\n * Claude Code's folder name for a project path: every character outside\n * [a-zA-Z0-9] becomes `-`; past 200 characters the id is cut to 200 and gets\n * `-` plus a base-36 hash of the full path. `/home/me/my_app` → `-home-me-my-app`.\n * Pass the project root (see {@link claudeProjectRoot}), not any folder.\n */\nexport function claudeProjectId(projectRoot: string): string {\n const id = projectRoot.replace(/[^a-zA-Z0-9]/g, '-');\n if (id.length <= MAX_ID) {return id;}\n return `${id.slice(0, MAX_ID)}-${Math.abs(claudeHash(projectRoot)).toString(36)}`;\n}\n\n/** A `.git` Claude Code counts: a folder or a file (a link that leads to one). */\nfunction isGitEntry(p: string): boolean {\n try {\n const st = lstatSync(p);\n if (st.isSymbolicLink()) {\n const target = statSync(p);\n return target.isDirectory() || target.isFile();\n }\n return st.isDirectory() || st.isFile();\n } catch {\n return false;\n }\n}\n\n/** A plain file (not a link) — the only kind of worktree pointer file followed. */\nfunction isPlainFile(p: string): boolean {\n try {\n return lstatSync(p).isFile();\n } catch {\n return false;\n }\n}\n\n/** The first folder at or above `start` with a `.git`, or null. */\nfunction findGitRoot(start: string): string | null {\n let cur = start;\n for (;;) {\n if (isGitEntry(join(cur, '.git'))) {return cur;}\n const parent = dirname(cur);\n if (parent === cur) {return null;}\n cur = parent;\n }\n}\n\n/**\n * The main checkout of a linked worktree, or `root` itself. Follows git's own\n * pointers and trusts them only when they agree: `.git` is a file saying\n * `gitdir: <dir>`, `<dir>/commondir` names the shared git folder, `<dir>` sits\n * in that folder's `worktrees/`, and `<dir>/gitdir` points back at this\n * `.git`. Anything else (a plain `.git` folder, a submodule, a mismatch) → `root`.\n */\nfunction canonicalGitRoot(root: string): string {\n let pointer: string;\n try {\n pointer = readFileSync(join(root, '.git'), 'utf-8').trim();\n } catch {\n return root; // a .git folder: already the main checkout\n }\n try {\n if (!pointer.startsWith('gitdir:')) {return root;}\n const gitDir = resolve(root, pointer.slice('gitdir:'.length).trim());\n const commondirFile = join(gitDir, 'commondir');\n if (!isPlainFile(commondirFile)) {return root;}\n const common = resolve(gitDir, readFileSync(commondirFile, 'utf-8').trim());\n if (resolve(dirname(gitDir)) !== join(common, 'worktrees')) {return root;}\n const backFile = join(gitDir, 'gitdir');\n if (!isPlainFile(backFile)) {return root;}\n const back = readFileSync(backFile, 'utf-8').trim();\n if (realpathSync(resolve(gitDir, back)) !== join(realpathSync(root), '.git')) {return root;}\n if (basename(common) !== '.git') {\n // A bare repo with worktrees: its folder is the root, unless it is itself inside a checkout.\n return isGitEntry(join(common, '.git')) ? root : common;\n }\n return dirname(common);\n } catch {\n return root;\n }\n}\n\n/**\n * The project root Claude Code keys a folder's memory by: the canonical git\n * root (a linked worktree → its main checkout), or the folder itself when it\n * is not in git. The folder is resolved on disk first (links followed), as\n * Claude Code sees its working folder; the result is NFC-normalized.\n */\nexport function claudeProjectRoot(dir: string): string {\n let start = resolve(dir);\n try {\n start = realpathSync.native(start);\n } catch {\n /* not on disk: keep the resolved path */\n }\n const gitRoot = findGitRoot(start);\n return (gitRoot ? canonicalGitRoot(gitRoot) : start).normalize('NFC');\n}\n\n/** `<config>/projects/<project-id>/memory` for the project `dir` is in. */\nexport function resolveClaudeMemoryDir(dir: string, opts: ClaudeMemoryOptions = {}): string {\n if (opts.memoryDir) {return resolve(opts.memoryDir);}\n const base =\n opts.configDir ||\n process.env.CLAUDE_CODE_REMOTE_MEMORY_DIR ||\n process.env.CLAUDE_CONFIG_DIR ||\n join(homedir(), '.claude');\n return join(resolve(base), 'projects', claudeProjectId(claudeProjectRoot(dir)), 'memory').normalize('NFC');\n}\n\n/** The MEMORY.md Claude Code loads for the project `dir` is in. */\nexport function resolveClaudeMemoryPath(dir: string, opts: ClaudeMemoryOptions = {}): string {\n return join(resolveClaudeMemoryDir(dir, opts), FAF_CONTEXT_FILES.memory);\n}\n\n/** Stack keys that are context, not stack (kept out of the Stack list). */\nconst NON_STACK = new Set(['target_user', 'core_problem', 'mission_purpose']);\nconst SIX_WS = ['who', 'what', 'why', 'where', 'when', 'how'] as const;\n\n/**\n * The block body faf keeps in MEMORY.md, from .faf data: a short project\n * summary (name, goal, language, type), the filled stack slots, the 6 Ws,\n * and up to 12 commands and key files. Kept short on purpose — Claude Code\n * loads only the first 200 lines, and the rest of the file is Claude's.\n */\nexport function renderClaudeMemory(data: FafData): string {\n const project = data.project ?? {};\n const summary: [string, unknown][] = [['Goal', project.goal], ['Language', project.main_language], ['Type', project.type]];\n const hc = data.human_context ?? {};\n const keyFiles = Array.isArray(data.key_files) ? data.key_files : [];\n\n const lines = [\n '## Project context — from project.faf',\n '',\n `- **Name:** ${filled(project.name) ? project.name : 'Project'}`,\n ...summary.filter(([, v]) => filled(v)).map(([label, v]) => `- **${label}:** ${v as string}`),\n ...section('Stack', Object.entries(data.stack ?? {})\n .filter(([k, v]) => !NON_STACK.has(k) && filled(v))\n .map(([k, v]) => `- **${slotLabel(`stack.${k}`)}:** ${v as string}`)),\n ...section('Context', SIX_WS.filter(w => filled(hc[w])).map(w => `- **${slotLabel(`human_context.${w}`)}:** ${hc[w] as string}`)),\n ...section('Commands', Object.entries(data.commands ?? {})\n .filter(([, v]) => filled(v))\n .slice(0, LIST_CAP)\n .map(([k, v]) => `- ${k}: \\`${commandOnly(v)}\\``)),\n ...section('Key files', keyFiles.filter(filled).slice(0, LIST_CAP).map(f => `- ${f}`)),\n '',\n \"*faf keeps this block in step with project.faf. Everything outside it is Claude's own and is kept as written.*\",\n ];\n return lines.join('\\n');\n}\n\n/** A `### title` section after a blank line, or nothing when it has no items. */\nfunction section(title: string, items: string[]): string[] {\n return items.length > 0 ? ['', `### ${title}`, ...items] : [];\n}\n\n/** claude-faf-mcp's earlier section: its heading as a whole line at column 0,\n * through the first later line that starts with its closing text — both\n * outside fenced code, raw HTML blocks and multi-line HTML comments (the\n * injector's own CommonMark scanner). The range covers both lines (the\n * closing line's terminator excluded), or null. A heading whose closing\n * line appears only inside a fence (a note quoting the old section) is not\n * a section: the file is Claude's, and the block goes on top. */\nfunction findLegacySection(text: string): { start: number; end: number } | null {\n return findMarkedRange(\n text,\n line => line.trimEnd() === LEGACY_START,\n line => line.startsWith(LEGACY_END_PREFIX),\n );\n}\n\n/** Lines in a text (a final line break does not start another line). */\nfunction countLines(text: string): number {\n if (text === '') {return 0;}\n const breaks = text.match(/\\r\\n|\\r|\\n/g)?.length ?? 0;\n return /(\\r\\n|\\r|\\n)$/.test(text) ? breaks : breaks + 1;\n}\n\ninterface Plan {\n text: string;\n action: Exclude<ClaudeMemoryAction, 'unchanged'>;\n /** Text before and after faf's block that must come back unchanged. */\n head: string;\n tail: string;\n}\n\n/** The new file text, and what of the old text must survive around the\n * block. `path` names the file when faf cannot place its block there (a\n * SafePathError `unplaceable`; nothing is written). */\nfunction plan(existing: string | null, wrapped: string, path: string): Plan {\n if (existing === null) {\n return { text: withFafBlock(null, wrapped, undefined, undefined, path), action: 'created', head: '', tail: '' };\n }\n const block = findFafBlock(existing);\n const range = block ?? findLegacySection(existing);\n if (range) {\n const head = existing.slice(0, range.start);\n const tail = existing.slice(range.end);\n return { text: placeFafBlock(head, wrapped, tail, undefined, undefined, path), action: block ? 'updated' : 'migrated', head, tail };\n }\n const bom = existing.startsWith('\\uFEFF') ? '\\uFEFF' : '';\n return { text: withFafBlock(existing, wrapped, undefined, undefined, path), action: 'added', head: bom, tail: existing.slice(bom.length) };\n}\n\n/** The 200-line note, when the text is past what Claude Code loads. */\nfunction lineWarnings(lines: number): string[] {\n return lines > LOADED_LINES\n ? [`MEMORY.md is ${lines} lines. Claude Code loads the first ${LOADED_LINES}; lines after that are kept in the file but not loaded.`]\n : [];\n}\n\n/**\n * Read what is in the MEMORY.md Claude Code loads for the project `dir` is in:\n * whether faf's block (or claude-faf-mcp's earlier section) is there, and how\n * many lines are Claude's own. Reads only; never creates or writes anything.\n * A file that exists but cannot be read throws.\n */\nexport function claudeMemoryStatus(dir: string, opts: ClaudeMemoryOptions = {}): ClaudeMemoryStatus {\n const memoryDir = resolveClaudeMemoryDir(dir, opts);\n const path = join(memoryDir, FAF_CONTEXT_FILES.memory);\n const empty = { path, exists: false, lines: 0, hasBlock: false, blockLines: 0, hasLegacySection: false, otherLines: 0, warnings: [] };\n if (!existsSync(memoryDir)) {return empty;}\n const text = readIfPresent(resolveInside(memoryDir, FAF_CONTEXT_FILES.memory));\n if (text === null) {return empty;}\n const block = findFafBlock(text);\n const outside = block ? `${text.slice(0, block.start)}${text.slice(block.end)}` : text;\n const lines = countLines(text);\n return {\n path,\n exists: true,\n lines,\n hasBlock: block !== null,\n blockLines: block ? countLines(text.slice(block.start, block.end)) : 0,\n hasLegacySection: !block && findLegacySection(text) !== null,\n otherLines: outside.split(/\\r\\n|\\r|\\n/).filter(l => l.replace(/^\\uFEFF/, '').trim() !== '').length,\n warnings: lineWarnings(lines),\n };\n}\n\n/**\n * Write faf's block into the MEMORY.md Claude Code loads for the project `dir`\n * is in (see the file header for the path rule and what is kept). Creates the\n * memory folder when it is not there yet. Throws — having written nothing —\n * when the file cannot be read (other than not existing), is not UTF-8, is a\n * link that leaves the memory folder, changed on disk while faf was writing,\n * cannot be written (the original is kept), or is one where faf cannot place\n * its block where its next run finds it again (SafePathError `unplaceable`,\n * the same one-line refusal as injectFafBlock).\n */\nexport function writeClaudeMemory(dir: string, data: FafData, opts: ClaudeMemoryOptions = {}): ClaudeMemoryResult {\n const memoryDir = resolveClaudeMemoryDir(dir, opts);\n makeDirInside(memoryDir);\n const path = resolveInside(memoryDir, FAF_CONTEXT_FILES.memory);\n const existing = readIfPresent(path);\n const next = plan(existing, wrapFafBlock(renderClaudeMemory(data)), path);\n\n if (next.text === existing) {\n const lines = countLines(existing);\n return { path, action: 'unchanged', written: false, preserved: true, lines, warnings: lineWarnings(lines) };\n }\n\n const written = safeWriteFile(path, next.text, { root: memoryDir, expect: existing });\n const after = readFileSync(written, 'utf-8');\n const preserved = after === next.text && after.startsWith(next.head) && after.endsWith(next.tail);\n const lines = countLines(after);\n // The block went on top of a file whose older faf block sits in a code\n // fence or comment: say so, as `faf sync` does for CLAUDE.md.\n const older = next.action === 'added' ? legacyStampNote(FAF_CONTEXT_FILES.memory, existing) : null;\n return { path: written, action: next.action, written: true, preserved, lines, warnings: [...(older ? [older] : []), ...lineWarnings(lines)] };\n}\n",
138
138
  "import type { FafData } from '../core/types.js';\nimport { readRepoFile, repoExists } from '../core/safe-write.js';\nimport { detectCommands, detectKeyFiles } from './scanner.js';\n\ntype Pkg = {\n type?: string;\n scripts?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} | null;\n\n/**\n * Detect the toolchain that governs code conventions. Emits POINTERS (\"obey the\n * configs\"), never restated lint rules — restating toolchain-enforced rules is a\n * known AGENTS.md anti-pattern (ASDLC \"toolchain-first\").\n */\nfunction detectConventions(dir: string, pkg: Pkg): string[] {\n const conv: string[] = [];\n const has = (f: string): boolean => repoExists(dir, f);\n const read = (f: string): string => readRepoFile(dir, f) ?? '';\n\n if (has('tsconfig.json') && /\"strict\"\\s*:\\s*true/.test(read('tsconfig.json'))) {\n conv.push('TypeScript strict mode (tsconfig.json)');\n }\n if (pkg?.type === 'module') {conv.push('ESM modules (`type: module`)');}\n\n const tools: string[] = [];\n const dev = pkg?.devDependencies ?? {};\n if (\n has('.eslintrc') || has('.eslintrc.json') || has('.eslintrc.cjs') ||\n has('eslint.config.js') || has('eslint.config.mjs') || 'eslint' in dev\n ) {\n tools.push('ESLint');\n }\n if (has('.prettierrc') || has('.prettierrc.json') || has('prettier.config.js') || 'prettier' in dev) {\n tools.push('Prettier');\n }\n const py = has('pyproject.toml') ? read('pyproject.toml') : '';\n if (/\\[tool\\.black\\]/.test(py)) {tools.push('black');}\n if (/\\[tool\\.ruff\\]/.test(py)) {tools.push('ruff');}\n if (/\\[tool\\.mypy\\]/.test(py)) {tools.push('mypy');}\n if (has('rustfmt.toml') || has('.rustfmt.toml')) {tools.push('rustfmt');}\n if (tools.length) {conv.push(`Style enforced by ${tools.join(' · ')} — obey the configs`);}\n\n return conv;\n}\n\n/**\n * Enrich .faf data with facts DETECTED from the repo at export time, so a lean\n * or stale .faf still yields a complete AGENTS.md — the \"frictionless, any repo\"\n * goal. Fill-if-absent: hand-authored .faf values always WIN; detection only\n * fills the gaps. Pure (returns a shallow copy; never mutates the input).\n *\n * Detects: build/test/lint commands, key files/entry points, and secrets\n * (.env presence — location only, never the values).\n */\nexport function enrichFromRepo(dir: string, data: FafData): FafData {\n const out: FafData = { ...data };\n\n let pkg: unknown = null;\n const pj = readRepoFile(dir, 'package.json');\n if (pj !== null) {\n try {\n pkg = JSON.parse(pj);\n } catch {\n pkg = null;\n }\n }\n\n // Commands: detected fills gaps; any hand-authored command key wins.\n const detected = detectCommands(dir, pkg as never);\n if (Object.keys(detected).length) {\n out.commands = { ...detected, ...(data.commands ?? {}) };\n }\n\n // Key files: keep the hand-authored list if present, else use detected.\n const existing =\n data.key_files ?? (data.instant_context as { key_files?: string[] } | undefined)?.key_files;\n if (!existing || existing.length === 0) {\n const files = detectKeyFiles(dir);\n if (files.length) {out.key_files = files;}\n }\n\n // Security: detect a secrets file (.env), keep hand-authored if present.\n if (!data.security) {\n const envFiles = ['.env', '.env.local', '.env.development'];\n const secrets = envFiles.find((f) => repoExists(dir, f));\n if (secrets) {\n const example = ['.env.example', '.env.sample', '.env.template'].find((f) =>\n repoExists(dir, f),\n );\n out.security = { secrets, ...(example ? { example } : {}) };\n }\n }\n\n // Conventions: detect the governing toolchain (fill-if-absent).\n if (!data.conventions) {\n const conv = detectConventions(dir, pkg as Pkg);\n if (conv.length) {out.conventions = conv;}\n }\n\n return out;\n}\n"
139
139
  ],
140
- "mappings": "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",
141
- "debugId": "043A6E313BD0AEBA64756E2164756E21",
140
+ "mappings": "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",
141
+ "debugId": "2B445F33F307665464756E2164756E21",
142
142
  "names": []
143
143
  }