@almadar/core 11.2.0 → 11.4.0
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/behavior-package.js +1 -3
- package/dist/{builders-C4TIhiks.d.ts → builders-CAQ_shuO.d.ts} +274 -274
- package/dist/builders.d.ts +6 -6
- package/dist/builders.js +8 -10
- package/dist/{bus-do1P9luP.d.ts → bus-QFvlnIfW.d.ts} +113 -438
- package/dist/{chunk-B4MNHGBP.js → chunk-5IRZ6ROW.js} +0 -2
- package/dist/{chunk-7NDAXM2Z.js → chunk-6XYHVJ4J.js} +1 -3
- package/dist/{chunk-2NKK2X53.js → chunk-7JO77HA6.js} +1 -3
- package/dist/chunk-AIRZM37O.js +3809 -0
- package/dist/{chunk-RGACZEYC.js → chunk-DDBAQMWA.js} +0 -2
- package/dist/{chunk-VOFHP52Z.js → chunk-DHWP7B4S.js} +147 -7
- package/dist/{chunk-7GHJU5WI.js → chunk-GNLND5O2.js} +0 -2
- package/dist/{chunk-PYYHDYTD.js → chunk-ISAUHHDU.js} +1 -3
- package/dist/{chunk-M4S2B5VJ.js → chunk-IU3WGC6Q.js} +0 -2
- package/dist/{chunk-VIHQKKTZ.js → chunk-JCRN3F6T.js} +10 -12
- package/dist/{chunk-7B4JRMRL.js → chunk-JPJQCTJI.js} +12 -6
- package/dist/{chunk-6H3UIZR2.js → chunk-O2ZUOWNK.js} +4 -6
- package/dist/{chunk-IE6WCCJP.js → chunk-OLSKERKZ.js} +51 -47
- package/dist/{chunk-N3CK4AYW.js → chunk-QV6J4EAF.js} +560 -58
- package/dist/{chunk-347APWFM.js → chunk-R3Y7ABF4.js} +2 -4
- package/dist/{chunk-3DZOFI53.js → chunk-TOAMAGC7.js} +2 -4
- package/dist/{chunk-LPJ7GKRM.js → chunk-UCP26C3C.js} +4 -6
- package/dist/{chunk-VG7BRFUD.js → chunk-W3UJRSYC.js} +0 -2
- package/dist/{effect-Dr--GXRe.d.ts → effect--PY8R4Oi.d.ts} +72 -38
- package/dist/{effect-result-geymPT9w.d.ts → effect-result-fH1ZTxn6.d.ts} +59 -38
- package/dist/{expression-DirYKz-f.d.ts → expression-DxY6ct3t.d.ts} +1 -1
- package/dist/factory/index.d.ts +3 -3
- package/dist/factory/index.js +8 -10
- package/dist/factory-runtime/index.d.ts +4 -4
- package/dist/factory-runtime/index.js +15 -17
- package/dist/fixtures.d.ts +8 -7
- package/dist/fixtures.js +6 -8
- package/dist/i18n/index.js +2 -4
- package/dist/{index-C8mF8btS.d.ts → index-Dk2AoJdI.d.ts} +43 -30
- package/dist/index.d.ts +17 -19
- package/dist/index.js +23 -25
- package/dist/kernel-wire.d.ts +3 -3
- package/dist/kernel-wire.js +3 -5
- package/dist/language/constructs.json +5 -0
- package/dist/language/program-types.json +6 -0
- package/dist/language/validation-codes.json +140 -0
- package/dist/language/vocabulary.json +45 -1
- package/dist/language-data.js +3 -5
- package/dist/lolo-document/index.js +0 -2
- package/dist/patterns/component-mapping.json +1 -1
- package/dist/patterns/definitions.d.ts +2 -2
- package/dist/patterns/definitions.js +1 -3
- package/dist/patterns/event-contracts.json +1 -1
- package/dist/patterns/index.d.ts +9 -3
- package/dist/patterns/index.js +3 -5
- package/dist/patterns/patterns-registry.json +560 -56
- package/dist/patterns/registry.json +560 -56
- package/dist/themes/index.js +2 -4
- package/dist/{trait-D9MjuwGC.d.ts → trait-BO2gbBte.d.ts} +82 -92
- package/dist/types/index.d.ts +9 -9
- package/dist/types/index.js +12 -14
- package/dist/{types-Bi-KSa0a.d.ts → types-CSBhbbse.d.ts} +3 -3
- package/package.json +6 -6
- package/dist/behavior-package.js.map +0 -1
- package/dist/builders.js.map +0 -1
- package/dist/chunk-2NKK2X53.js.map +0 -1
- package/dist/chunk-347APWFM.js.map +0 -1
- package/dist/chunk-3DZOFI53.js.map +0 -1
- package/dist/chunk-6H3UIZR2.js.map +0 -1
- package/dist/chunk-7B4JRMRL.js.map +0 -1
- package/dist/chunk-7GHJU5WI.js.map +0 -1
- package/dist/chunk-7NDAXM2Z.js.map +0 -1
- package/dist/chunk-B4MNHGBP.js.map +0 -1
- package/dist/chunk-IE6WCCJP.js.map +0 -1
- package/dist/chunk-LPJ7GKRM.js.map +0 -1
- package/dist/chunk-M4S2B5VJ.js.map +0 -1
- package/dist/chunk-N3CK4AYW.js.map +0 -1
- package/dist/chunk-PYYHDYTD.js.map +0 -1
- package/dist/chunk-RGACZEYC.js.map +0 -1
- package/dist/chunk-VG7BRFUD.js.map +0 -1
- package/dist/chunk-VIHQKKTZ.js.map +0 -1
- package/dist/chunk-VOFHP52Z.js.map +0 -1
- package/dist/chunk-ZDIHVDTW.js +0 -3810
- package/dist/chunk-ZDIHVDTW.js.map +0 -1
- package/dist/factory/index.js.map +0 -1
- package/dist/factory-runtime/index.js.map +0 -1
- package/dist/fixtures.js.map +0 -1
- package/dist/i18n/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kernel-wire.js.map +0 -1
- package/dist/language-data.js.map +0 -1
- package/dist/lolo-document/index.js.map +0 -1
- package/dist/patterns/definitions.js.map +0 -1
- package/dist/patterns/index.js.map +0 -1
- package/dist/themes/index.js.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/{domain-JuWUUeJ3.d.ts → domain-Cpmja5ak.d.ts} +51 -51
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data-bearing.ts"],"names":[],"mappings":";;;AAKA,SAAS,aAAA,CAAc,QAA6B,IAAA,EAAuB;AACzE,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,KAAA;AACnC,EAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,OAAA,IAAW,OAAO,CAAC,CAAA,KAAM,MAAM,OAAO,IAAA;AACxD,EAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,SAAA,IAAa,OAAO,CAAC,CAAA,KAAM,MAAM,OAAO,IAAA;AAC1D,EAAA,KAAA,MAAW,QAAQ,MAAA,EAAQ;AACzB,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAI,CAAA,IAAK,cAAc,IAAA,EAAM,IAAI,GAAG,OAAO,IAAA;AAAA,EAC/D;AACA,EAAA,OAAO,KAAA;AACT;AAGO,SAAS,wBAAwB,OAAA,EAAqC;AAC3E,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA;AACvB,EAAA,MAAM,IAAA,GAAO,OAAO,MAAA,KAAW,QAAA,IAAY,WAAW,IAAA,IAAQ,MAAA,IAAU,MAAA,GAAS,MAAA,CAAO,IAAA,GAAO,MAAA;AAC/F,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,KAAA;AACrC,EAAA,OAAA,CAAQ,OAAA,CAAQ,MAAA,IAAU,EAAC,EAAG,IAAA;AAAA,IAAK,CAAC,KAAA,KAClC,aAAA,CAAc,KAAK,CAAA,IAAA,CAAM,MAAM,YAAA,EAAc,WAAA,IAAe,EAAC,EAAG,IAAA,CAAK,CAAC,OAAO,CAAA,CAAE,OAAA,IAAW,EAAC,EAAG,IAAA,CAAK,CAAC,MAAM,aAAA,CAAc,CAAA,EAAG,IAAI,CAAC,CAAC;AAAA,GACnI;AACF","file":"chunk-PYYHDYTD.js","sourcesContent":["import type { OrbitalDefinition } from './types/orbital.js';\nimport type { SExpr } from './types/expression.js';\nimport type { TypedEffect } from './types/effect.js';\nimport { isInlineTrait } from './types/trait.js';\n\nfunction touchesRecord(effect: TypedEffect | SExpr, name: string): boolean {\n if (!Array.isArray(effect)) return false;\n if (effect[0] === 'fetch' && effect[1] === name) return true;\n if (effect[0] === 'persist' && effect[2] === name) return true;\n for (const item of effect) {\n if (Array.isArray(item) && touchesRecord(item, name)) return true;\n }\n return false;\n}\n\n/** True when the orbital's own inline traits fetch or persist its primary record. */\nexport function orbitalTouchesOwnRecord(orbital: OrbitalDefinition): boolean {\n const entity = orbital.entity;\n const name = typeof entity === 'object' && entity !== null && 'name' in entity ? entity.name : undefined;\n if (typeof name !== 'string') return false;\n return (orbital.traits ?? []).some((trait) =>\n isInlineTrait(trait) && (trait.stateMachine?.transitions ?? []).some((t) => (t.effects ?? []).some((e) => touchesRecord(e, name))),\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/behavior-package.ts"],"names":["readdirSync","join","relative"],"mappings":"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","file":"chunk-RGACZEYC.js","sourcesContent":["/**\n * The `orb` block a behavior package declares in its `package.json`\n * (`docs/Almadar_Behavior_Packages.md` §3) and the one resolver for the files it\n * declares. Readers resolve sidecars through these declared paths, never through\n * a hardcoded package layout. The walk over installed packages is `orb list --json --ancestors` (`orbital_core::behavior_packages::discover`).\n *\n * Node-only (reads `package.json` with `node:fs`): exported from the\n * `@almadar/core/behavior-package` subpath only, never the main entry, so browser\n * bundles never pull in `node:fs` (the `@almadar/core/fixtures` precedent).\n *\n * @packageDocumentation\n */\n// Namespace imports: a browser bundle that reaches this Node-only module through a\n// dynamic import (the runtime's external loader) can still link it against the\n// bundler's empty builtin stubs — named imports would fail to bind.\nimport * as nodeCrypto from 'node:crypto';\nimport * as nodeChildProcess from 'node:child_process';\nimport * as nodeFs from 'node:fs';\nimport * as nodeOs from 'node:os';\nimport * as nodePath from 'node:path';\nimport { z } from 'zod';\n\nconst { createHash } = nodeCrypto;\nconst { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, utimesSync, writeFileSync } = nodeFs;\nconst { homedir } = nodeOs;\nconst { dirname, isAbsolute, join, relative, resolve } = nodePath;\n\nexport const BehaviorPackageOrbBlockSchema = z\n .object({\n prefix: z.string().min(1),\n /** A materialized tree of lowered `.orb` programs (a published package). */\n registry: z.string().min(1).optional(),\n /** The `.lolo` sources, lowered on read when no `registry` is declared (a workspace package). */\n source: z.string().min(1).optional(),\n vectors: z.string().min(1).optional(),\n /** The language versions the package is written for (`@almadar/core`'s `orbLanguage.version`). */\n language: z.string().min(1),\n })\n .refine((orb) => orb.registry !== undefined || orb.source !== undefined, {\n message: 'declares neither `registry` (materialized) nor `source` (live)',\n });\n\nexport type BehaviorPackageOrbBlock = z.infer<typeof BehaviorPackageOrbBlockSchema>;\n\nconst PackageManifestSchema = z.object({\n name: z.string().default(''),\n version: z.string().default(''),\n orb: BehaviorPackageOrbBlockSchema.optional(),\n});\n\n/** `sidecars.lock.json` — package-relative paths whose content lives in the sidecar store (§13). */\nexport const SidecarLockSchema = z.object({\n version: z.literal(1),\n files: z.record(\n z.string(),\n z.object({\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n bytes: z.number().int().nonnegative(),\n url: z.string().url(),\n }),\n ),\n});\n\nexport type SidecarLock = z.infer<typeof SidecarLockSchema>;\nexport type SidecarLockEntry = SidecarLock['files'][string];\n\nexport type DeclaredFileKey = 'vectors';\n\nexport interface BehaviorPackage {\n name: string;\n version: string;\n root: string;\n orb: BehaviorPackageOrbBlock;\n /** The package's `sidecars.lock.json`, or `null` when it ships none. */\n lock: SidecarLock | null;\n}\n\n/** Fetches a lock entry's url and returns its (decoded) bytes. Injected in tests. */\nexport type SidecarFetch = (url: string) => Promise<Uint8Array>;\n\nexport interface SidecarOptions {\n /** Default: `ALMADAR_SIDECAR_CACHE`, else `~/.almadar/sidecars`. */\n cacheDir?: string;\n fetch?: SidecarFetch;\n}\n\nexport class BehaviorPackageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'BehaviorPackageError';\n }\n}\n\n/** Read the behavior package rooted at `root`; refuses a `package.json` with no `orb` block. */\nexport function readBehaviorPackage(root: string): BehaviorPackage {\n const manifest = join(root, 'package.json');\n const result = PackageManifestSchema.safeParse(JSON.parse(readFileSync(manifest, 'utf8')));\n if (!result.success) {\n throw new BehaviorPackageError(`${manifest}: malformed \\`orb\\` block — ${result.error.message}`);\n }\n const { name, version, orb } = result.data;\n if (!orb) {\n throw new BehaviorPackageError(`${manifest} declares no \\`orb\\` block — not a behavior package`);\n }\n return { name, version, root, orb, lock: readSidecarLock(root) };\n}\n\n/** Runtime sidecars: shipped, resolved on demand. */\nexport const SIDECAR_LOCK_FILE = 'sidecars.lock.json';\n/** Build inputs: committed, not shipped; restored into the package before a build. */\nexport const BUILD_INPUTS_LOCK_FILE = 'build-inputs.lock.json';\n\n/** Read a package lock file (`SIDECAR_LOCK_FILE` or `BUILD_INPUTS_LOCK_FILE`); `null` when the package has none. */\nexport function readLockFile(root: string, lockFile: string = SIDECAR_LOCK_FILE): SidecarLock | null {\n const lockPath = join(root, lockFile);\n if (!existsSync(lockPath)) return null;\n const result = SidecarLockSchema.safeParse(JSON.parse(readFileSync(lockPath, 'utf8')));\n if (!result.success) {\n throw new BehaviorPackageError(`${lockPath}: malformed ${lockFile} — ${result.error.message}`);\n }\n return result.data;\n}\n\nfunction readSidecarLock(root: string): SidecarLock | null {\n return readLockFile(root, SIDECAR_LOCK_FILE);\n}\n\nexport function sidecarCacheDir(): string {\n return process.env['ALMADAR_SIDECAR_CACHE'] || join(homedir(), '.almadar', 'sidecars');\n}\n\nconst defaultFetch: SidecarFetch = async (url) => {\n const response = await fetch(url);\n if (!response.ok) throw new Error(`HTTP ${response.status}`);\n return new Uint8Array(await response.arrayBuffer());\n};\n\nfunction urlHost(url: string): string {\n return new URL(url).host;\n}\n\nfunction hashMismatch(pkg: Pick<BehaviorPackage, 'name' | 'version'>, relPath: string, entry: SidecarLockEntry, detail: string): BehaviorPackageError {\n return new BehaviorPackageError(\n `ORB_SIDECAR_HASH_MISMATCH: ${pkg.name}@${pkg.version} ${relPath} — expected sha256 ${entry.sha256} (${entry.bytes} bytes), ${detail}`,\n );\n}\n\nfunction packageFile(pkg: BehaviorPackage, relPath: string, label: string): string {\n const absolute = resolve(pkg.root, relPath);\n const rel = relative(pkg.root, absolute);\n if (rel.startsWith('..') || isAbsolute(rel)) {\n throw new BehaviorPackageError(`${pkg.name}: ${label} = \"${relPath}\" points outside the package`);\n }\n if (!existsSync(absolute)) {\n throw new BehaviorPackageError(`${pkg.name}@${pkg.version}: ${label} declares \"${relPath}\", which is not in the package`);\n }\n return absolute;\n}\n\n/**\n * Sync resolution of a declared path (§13 rule): a lock-declared path resolves to its cache\n * file and fails with ORB_SIDECAR_NOT_CACHED when absent; any other path is read from the package.\n */\nexport function resolveDeclaredPath(pkg: BehaviorPackage, relPath: string, options: SidecarOptions = {}, label = 'declared path'): string {\n const entry = pkg.lock?.files[relPath];\n if (!entry) return packageFile(pkg, relPath, label);\n const cached = join(options.cacheDir ?? sidecarCacheDir(), entry.sha256);\n if (!existsSync(cached)) {\n throw new BehaviorPackageError(\n `ORB_SIDECAR_NOT_CACHED: ${pkg.name}@${pkg.version} ${relPath} (sha256 ${entry.sha256}) is not in the sidecar cache — resolve it with ensureDeclaredPath or \\`npx @almadar/db sidecars pull\\``,\n );\n }\n if (statSync(cached).size !== entry.bytes) throw hashMismatch(pkg, relPath, entry, `cached file has ${statSync(cached).size} bytes`);\n return cached;\n}\n\n/** Ensures one lock entry is in the cache (downloading and verifying it on a miss) and returns the cache file. */\nexport async function ensureLockEntry(\n pkg: Pick<BehaviorPackage, 'name' | 'version'>,\n relPath: string,\n entry: SidecarLockEntry,\n options: SidecarOptions = {},\n): Promise<string> {\n const cacheDir = options.cacheDir ?? sidecarCacheDir();\n const cached = join(cacheDir, entry.sha256);\n if (existsSync(cached)) {\n if (statSync(cached).size !== entry.bytes) throw hashMismatch(pkg, relPath, entry, `cached file has ${statSync(cached).size} bytes`);\n return cached;\n }\n let bytes: Uint8Array;\n try {\n bytes = await (options.fetch ?? defaultFetch)(entry.url);\n } catch (error) {\n throw new BehaviorPackageError(\n `ORB_SIDECAR_FETCH_FAILED: ${pkg.name}@${pkg.version} ${relPath} (sha256 ${entry.sha256}) from ${urlHost(entry.url)} — ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n const actual = createHash('sha256').update(bytes).digest('hex');\n if (actual !== entry.sha256 || bytes.byteLength !== entry.bytes) {\n throw hashMismatch(pkg, relPath, entry, `downloaded ${bytes.byteLength} bytes with sha256 ${actual}`);\n }\n mkdirSync(cacheDir, { recursive: true });\n const temp = `${cached}.${process.pid}.tmp`;\n writeFileSync(temp, bytes);\n renameSync(temp, cached);\n return cached;\n}\n\n/** Async resolution of a declared path: a lock-declared path is downloaded and verified into the cache on a miss. */\nexport async function ensureDeclaredPath(pkg: BehaviorPackage, relPath: string, options: SidecarOptions = {}): Promise<string> {\n const entry = pkg.lock?.files[relPath];\n if (!entry) return packageFile(pkg, relPath, 'declared path');\n return ensureLockEntry(pkg, relPath, entry, options);\n}\n\n/** The user store (`~/.orb`): the last rung of discovery, after every ancestor `node_modules`. */\nexport function userStoreDir(): string {\n return join(homedir(), '.orb');\n}\n\nfunction packageDirs(nodeModules: string): string[] {\n if (!existsSync(nodeModules)) return [];\n const out: Array<[string, string]> = [];\n for (const entry of readdirSync(nodeModules)) {\n const path = join(nodeModules, entry);\n if (entry.startsWith('@')) {\n if (!existsSync(path) || !statSync(path).isDirectory()) continue;\n for (const sub of readdirSync(path)) out.push([`${entry}/${sub}`, join(path, sub)]);\n } else {\n out.push([entry, path]);\n }\n }\n return out.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0)).map(([, path]) => path);\n}\n\n/**\n * Every installed package directory, the node-style rule `orb` uses\n * (`orbital-core` `behavior_packages`): each ancestor `node_modules` of\n * `startDir`, nearest first, then the user store's; scoped and unscoped; only\n * directories holding a `package.json`. Real paths; a package name may repeat\n * across rungs (callers keep the nearest).\n */\nexport function installedPackageDirs(startDir: string, userStore: string = userStoreDir()): string[] {\n const rungs: string[] = [];\n for (let dir = resolve(startDir); ; dir = dirname(dir)) {\n rungs.push(join(dir, 'node_modules'));\n if (dirname(dir) === dir) break;\n }\n rungs.push(join(userStore, 'node_modules'));\n const out: string[] = [];\n for (const nodeModules of rungs) {\n for (const dir of packageDirs(nodeModules)) {\n if (!existsSync(join(dir, 'package.json')) || !statSync(dir).isDirectory()) continue;\n out.push(realpathSync(dir));\n }\n }\n return out;\n}\n\n/** One row of `orb list --json --ancestors`: an installed behavior package, as the kernel's discovery reads it. */\nconst DiscoveredRowSchema = z.object({\n name: z.string(),\n version: z.string(),\n root: z.string(),\n prefix: z.string().min(1),\n registry: z.string().min(1).optional(),\n source: z.string().min(1).optional(),\n vectors: z.string().min(1).optional(),\n language: z.string().min(1),\n lock: SidecarLockSchema.optional(),\n});\n\nexport interface DiscoverOptions {\n /** The `orb` binary; default {@link resolveOrbBinary} from `startDir`. */\n orbBin?: string;\n /** The home whose `.orb` is the user store (the last rung); default the process's. */\n home?: string;\n}\n\n/**\n * Every installed behavior package, as `orb` discovers them (`orbital-core` `behavior_packages::discover`, the std\n * `orb list --json --ancestors` command): each ancestor `node_modules` of `startDir`, nearest first, then the user\n * store's; nearest wins per name; two packages claiming one prefix is an error.\n */\nexport function discoverBehaviorPackages(startDir: string, options: DiscoverOptions = {}): BehaviorPackage[] {\n const start = resolve(startDir);\n const orbBin = options.orbBin ?? resolveOrbBinary(start);\n const run = nodeChildProcess.spawnSync(orbBin, ['list', '--json', '--ancestors'], {\n cwd: start,\n encoding: 'utf8',\n maxBuffer: 1024 * 1024 * 64,\n env: options.home !== undefined ? { ...process.env, HOME: options.home } : process.env,\n });\n if (run.error !== undefined) throw new BehaviorPackageError(`${orbBin} list --ancestors: ${run.error.message}`);\n if (run.status !== 0) throw new BehaviorPackageError(`${orbBin} list --ancestors exited ${run.status}: ${run.stderr.trim()}`);\n return DiscoveredRowSchema.array()\n .parse(JSON.parse(run.stdout))\n .map((row) => ({\n name: row.name,\n version: row.version,\n root: row.root,\n orb: {\n prefix: row.prefix,\n language: row.language,\n ...(row.registry !== undefined ? { registry: row.registry } : {}),\n ...(row.source !== undefined ? { source: row.source } : {}),\n ...(row.vectors !== undefined ? { vectors: row.vectors } : {}),\n },\n lock: row.lock ?? null,\n }));\n}\n\n/** Resolve an installed behavior package by name, node-style, from `fromDir`. */\nexport function findInstalledBehaviorPackage(name: string, fromDir: string): BehaviorPackage {\n const found = discoverBehaviorPackages(fromDir).find((pkg) => pkg.name === name);\n if (found === undefined) throw new BehaviorPackageError(`${name} is not an installed behavior package from ${resolve(fromDir)}`);\n return found;\n}\n\n/** The absolute path of a file (or the registry directory) the package declares. Fails when it is missing. */\nexport function resolveDeclaredFile(pkg: BehaviorPackage, key: DeclaredFileKey, options: SidecarOptions = {}): string {\n const declared = pkg.orb[key];\n if (declared === undefined) {\n throw new BehaviorPackageError(`${pkg.name}@${pkg.version}: orb.${key} is not declared`);\n }\n return resolveDeclaredPath(pkg, declared, options, `orb.${key}`);\n}\n\n/** The `bin` entry of an installed `@almadar/orb` manifest: a string, or a map whose first entry is the CLI. */\nconst OrbPackageManifest = z.object({ bin: z.union([z.string(), z.record(z.string(), z.string())]).optional() });\n\n/**\n * The `orb` binary, the one rule every TS host uses (G-CROSS-261; the editor's language server too, G-EXTENSIONS-004),\n * from exactly two explicit sources: `ORB_BIN` (a set path must exist: it is refused by name, never skipped), else the\n * binary the `@almadar/orb` installed for `from` declares. Nothing on PATH, in `~/bin` or elsewhere is consulted.\n */\nexport function resolveOrbBinary(from: string = process.cwd()): string {\n const configured = process.env['ORB_BIN'];\n if (configured) {\n if (!existsSync(configured)) throw new BehaviorPackageError(`ORB_BIN is set to ${configured}, which does not exist`);\n return configured;\n }\n const installed = installedOrbBin(from);\n if (installed !== undefined) return installed;\n throw new BehaviorPackageError('no `orb` binary: set ORB_BIN or install @almadar/orb');\n}\n\n/** The CLI the nearest `node_modules/@almadar/orb` walking up from `from` declares in its manifest `bin`. */\nfunction installedOrbBin(from: string): string | undefined {\n for (let dir = resolve(from); ; dir = dirname(dir)) {\n const manifestPath = join(dir, 'node_modules', '@almadar', 'orb', 'package.json');\n if (existsSync(manifestPath)) {\n const parsed = OrbPackageManifest.safeParse(JSON.parse(readFileSync(manifestPath, 'utf8')));\n const bin = !parsed.success || parsed.data.bin === undefined ? undefined : typeof parsed.data.bin === 'string' ? parsed.data.bin : Object.values(parsed.data.bin)[0];\n const path = bin === undefined ? undefined : resolve(dirname(manifestPath), bin);\n return path !== undefined && existsSync(path) ? path : undefined;\n }\n if (dirname(dir) === dir) return undefined;\n }\n}\n\n/** Default: `ALMADAR_DERIVED_CACHE`, else `~/.almadar/derived`. */\nexport function derivedCacheDir(): string {\n return process.env['ALMADAR_DERIVED_CACHE'] || join(homedir(), '.almadar', 'derived');\n}\n\nexport interface RegistryDirOptions {\n orbBin?: string;\n cacheDir?: string;\n}\n\nconst fileHashes = new Map<string, string>();\n\n/** sha256 of a file's bytes, memoized by path, size and mtime. */\nfunction fileHash(path: string): string {\n const stat = statSync(path);\n const memo = `${path}\\0${stat.size}\\0${stat.mtimeMs}`;\n const known = fileHashes.get(memo);\n if (known) return known;\n const hash = createHash('sha256').update(readFileSync(path)).digest('hex');\n fileHashes.set(memo, hash);\n return hash;\n}\n\n/**\n * What a lowering depends on besides the source: the `orb` binary's bytes (a\n * rebuilt binary keeps its version string) and the language data files the\n * `@almadar/core` that `orb` resolves from `pkgRoot` declares (`orbLanguage`,\n * same walk as `orb`: ancestor `node_modules`, then the user store).\n */\nfunction lowererKey(orbBin: string, pkgRoot: string): string {\n const hash = createHash('sha256').update(fileHash(orbBin));\n const rungs: string[] = [];\n for (let dir = resolve(pkgRoot); ; dir = dirname(dir)) {\n rungs.push(join(dir, 'node_modules'));\n if (dirname(dir) === dir) break;\n }\n rungs.push(join(userStoreDir(), 'node_modules'));\n const coreRoot = rungs.map((nm) => join(nm, '@almadar', 'core')).find((dir) => existsSync(join(dir, 'package.json')));\n if (!coreRoot) return hash.update('\\0no-core').digest('hex');\n const manifest = JSON.parse(readFileSync(join(coreRoot, 'package.json'), 'utf8')) as { orbLanguage?: Record<string, string | string[]> };\n for (const [field, rel] of Object.entries(manifest.orbLanguage ?? {}).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))) {\n if (field === 'version' || field === 'sources') continue;\n if (typeof rel !== 'string') throw new BehaviorPackageError(`${coreRoot}/package.json: \\`orbLanguage.${field}\\` is not a file path`);\n const path = join(coreRoot, rel);\n if (!existsSync(path) || !statSync(path).isFile()) continue;\n hash.update(`\\0${field}\\0${fileHash(path)}`);\n }\n return hash.digest('hex');\n}\n\n/** Where a live package's mirror lives: keyed by its root and what lowers it ({@link lowererKey}). */\nfunction mirrorDir(pkg: BehaviorPackage, orbBin: string, cacheDir: string | undefined): string {\n const key = createHash('sha256').update(`${resolve(pkg.root)}\\0${lowererKey(orbBin, pkg.root)}`).digest('hex').slice(0, 32);\n return join(cacheDir ?? derivedCacheDir(), 'registry', key);\n}\n\n/**\n * Delete every live-package mirror under the derived cache except those of\n * `keep` (as the current `orb` keys them) — a new `orb` binary, new language data or a moved\n * checkout leaves the old ones behind. Returns the removed directories.\n * Explicit and total: it removes every mirror not in `keep`. Reading a mirror\n * ({@link behaviorRegistryDir}) separately keeps only the newest\n * {@link REGISTRY_MIRROR_LIMIT}.\n */\nexport function pruneRegistryMirrors(keep: readonly BehaviorPackage[], options: RegistryDirOptions = {}): string[] {\n const orbBin = options.orbBin ?? resolveOrbBinary();\n const kept = new Set(keep.filter((pkg) => pkg.orb.registry === undefined).map((pkg) => mirrorDir(pkg, orbBin, options.cacheDir)));\n const root = join(options.cacheDir ?? derivedCacheDir(), 'registry');\n if (!existsSync(root)) return [];\n const removed: string[] = [];\n for (const entry of readdirSync(root, { withFileTypes: true })) {\n const dir = join(root, entry.name);\n if (!entry.isDirectory() || kept.has(dir)) continue;\n rmSync(dir, { recursive: true, force: true });\n removed.push(dir);\n }\n return removed.sort();\n}\n\n/**\n * The directory of lowered `.orb` programs for `pkg`. A declared `orb.registry`\n * (a published package) is that directory. A live package (`orb.source`, no\n * `registry`) gets a content-addressed mirror under `derivedCacheDir()`, keyed by\n * the package root, the `orb` binary and the installed language data: each `.lolo` whose content hash changed\n * since the last call is re-lowered with `orb lower`, a removed one is pruned, and\n * an unchanged one is never touched; each behavior's `locales/<locale>/<name>.json`\n * catalog is copied beside its program. Same tree layout as a materialized registry,\n * so every reader of `.orb` files works unchanged. A lowering error fails the call,\n * naming the file.\n */\n/**\n * How many live-package mirrors the derived cache keeps. One mirror is a package's full lowered registry\n * (170-360 MB for std), keyed by package root, `orb` binary and language data, so every rebuilt `orb` and every\n * checkout adds one per package. Six holds the current and the previous binary of the two packages a checkout\n * mounts (std, behaviors) plus a second checkout's current pair, and bounds the cache near 2 GB.\n */\nexport const REGISTRY_MIRROR_LIMIT = 6;\n\nconst mirrorsInUse = new Set<string>();\n\n/**\n * Evict the mirrors under `registryRoot` beyond the `limit` most recently used (directory modification time,\n * newest first, ties broken by name), always keeping every directory in `protectedDirs`. Returns the removed\n * directories, sorted.\n */\nexport function evictOldMirrors(registryRoot: string, protectedDirs: ReadonlySet<string>, limit: number = REGISTRY_MIRROR_LIMIT): string[] {\n if (!existsSync(registryRoot)) return [];\n const mirrors = readdirSync(registryRoot, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => {\n const dir = join(registryRoot, entry.name);\n return { dir, name: entry.name, used: statSync(dir).mtimeMs };\n })\n .sort((a, b) => b.used - a.used || (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));\n const removed: string[] = [];\n for (const mirror of mirrors.slice(limit)) {\n if (protectedDirs.has(mirror.dir)) continue;\n rmSync(mirror.dir, { recursive: true, force: true });\n removed.push(mirror.dir);\n }\n return removed.sort();\n}\n\n/**\n * The files a package authors its behaviors in, without lowering anything: a\n * live package's `.lolo` source tree, or a published package's declared registry\n * of `.orb` programs. For tools that read behavior text (a class scanner, a\n * file watcher); a reader of lowered programs uses {@link behaviorRegistryDir}.\n */\nexport function behaviorSourceTree(pkg: BehaviorPackage): { dir: string; extension: '.lolo' | '.orb' } {\n if (pkg.orb.registry !== undefined) {\n return { dir: resolveDeclaredPath(pkg, pkg.orb.registry, {}, 'orb.registry'), extension: '.orb' };\n }\n if (pkg.orb.source === undefined) throw new BehaviorPackageError(`${pkg.name}: declares neither \\`orb.registry\\` nor \\`orb.source\\``);\n return { dir: packageFile(pkg, pkg.orb.source, 'orb.source'), extension: '.lolo' };\n}\n\nexport const MaterializeAnswerSchema = z.object({\n dir: z.string().min(1),\n failures: z.array(z.object({ rel: z.string(), error: z.string() })),\n});\nexport type MaterializeFailure = z.infer<typeof MaterializeAnswerSchema>['failures'][number];\n\nexport interface BehaviorRegistry {\n dir: string;\n /** Sources that did not lower; the rest of the mirror is current. Empty for a materialized registry. */\n failures: MaterializeFailure[];\n}\n\n/** The registry mirror's directory; use {@link behaviorRegistry} to see which sources failed to lower. */\nexport function behaviorRegistryDir(pkg: BehaviorPackage, options: RegistryDirOptions = {}): string {\n return behaviorRegistry(pkg, options).dir;\n}\n\n/**\n * Throws naming the file and its lower error when `rel` (a `.lolo` path relative to the source tree, or its `.orb`\n * twin) is one of the registry's failures.\n */\nexport function assertImportable(pkg: BehaviorPackage, registry: BehaviorRegistry, rel: string): void {\n const lolo = rel.replace(/\\.orb$/, '.lolo');\n const failed = registry.failures.find((f) => f.rel === lolo);\n if (failed !== undefined) throw new BehaviorPackageError(`${pkg.name}: ${failed.rel} does not lower: ${failed.error}`);\n}\n\nexport function behaviorRegistry(pkg: BehaviorPackage, options: RegistryDirOptions = {}): BehaviorRegistry {\n if (pkg.orb.registry !== undefined) return { dir: resolveDeclaredPath(pkg, pkg.orb.registry, {}, 'orb.registry'), failures: [] };\n const sourceRel = pkg.orb.source;\n if (sourceRel === undefined) throw new BehaviorPackageError(`${pkg.name}: declares neither \\`orb.registry\\` nor \\`orb.source\\``);\n const source = packageFile(pkg, sourceRel, 'orb.source');\n const orbBin = options.orbBin ?? resolveOrbBinary();\n const out = mirrorDir(pkg, orbBin, options.cacheDir);\n mkdirSync(out, { recursive: true });\n const usedAt = new Date();\n utimesSync(out, usedAt, usedAt);\n mirrorsInUse.add(out);\n evictOldMirrors(dirname(out), mirrorsInUse);\n const cache = options.cacheDir ?? derivedCacheDir();\n const run = nodeChildProcess.spawnSync(orbBin, ['materialize', '--json', relative(cache, out)], {\n cwd: source,\n encoding: 'utf8',\n maxBuffer: 1024 * 1024 * 64,\n env: { ...process.env, ALMADAR_DERIVED_CACHE: cache },\n });\n if (run.error !== undefined) throw new BehaviorPackageError(`${pkg.name}: ${orbBin} materialize: ${run.error.message}`);\n if (run.status !== 0) throw new BehaviorPackageError(`${pkg.name}: \\`orb materialize\\` failed: ${run.stderr.trim()}`);\n const answer = MaterializeAnswerSchema.safeParse(JSON.parse(run.stdout));\n if (!answer.success) throw new BehaviorPackageError(`${pkg.name}: \\`orb materialize --json\\` answered an unreadable body: ${answer.error.message}`);\n return { dir: out, failures: answer.data.failures };\n}\n\n/**\n * Every behavior program in the package's registry, by behavior name: each `.orb` under the\n * registry tree, named by its basename (the rule `orb` indexes by). Two programs with one name\n * are refused.\n */\nexport function behaviorProgramFiles(pkg: BehaviorPackage, options: RegistryDirOptions = {}): Map<string, string> {\n const registry = behaviorRegistry(pkg, options);\n const root = registry.dir;\n for (const failed of registry.failures) assertImportable(pkg, registry, failed.rel);\n const files = new Map<string, string>();\n const walk = (dir: string): void => {\n for (const entry of nodeFs.readdirSync(dir, { withFileTypes: true })) {\n const full = nodePath.join(dir, entry.name);\n if (entry.isDirectory()) walk(full);\n else if (entry.isFile() && entry.name.endsWith('.orb')) {\n const name = entry.name.slice(0, -'.orb'.length);\n const seen = files.get(name);\n if (seen !== undefined) {\n throw new BehaviorPackageError(`${pkg.name}: two programs named \"${name}\": ${nodePath.relative(root, seen)} and ${nodePath.relative(root, full)}`);\n }\n files.set(name, full);\n }\n }\n };\n walk(root);\n return files;\n}\n\nexport interface MaterializeOptions extends RegistryDirOptions {\n /** Package-relative directory the programs are written into. Default `behaviors/registry`. */\n target?: string;\n}\n\nfunction treeFiles(dir: string): string[] {\n if (!existsSync(dir)) return [];\n const out: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith('.')) continue;\n const path = join(dir, entry.name);\n if (entry.isDirectory()) out.push(...treeFiles(path));\n else out.push(path);\n }\n return out.sort();\n}\n\n/**\n * Publish-time materialization of a live package (`orb.source`, no\n * `orb.registry`): copies its lowered programs and their catalogs from\n * {@link behaviorRegistryDir} into `target` inside the package, re-emits each\n * program that declares `locales` through `orb emit orb --output` so its merged\n * `<stem>.<locale>.json` catalogs ship beside it, and returns the `orb` block the\n * published manifest declares (`registry` set, `source` kept). Files already in\n * `target` that are not programs are\n * left alone.\n */\nexport function materializeRegistry(pkg: BehaviorPackage, options: MaterializeOptions = {}): BehaviorPackageOrbBlock {\n if (pkg.orb.registry !== undefined) {\n throw new BehaviorPackageError(`${pkg.name}: already declares \\`orb.registry\\` (${pkg.orb.registry}) — only a live package is materialized`);\n }\n const sourceRel = pkg.orb.source;\n if (sourceRel === undefined) throw new BehaviorPackageError(`${pkg.name}: declares no \\`orb.source\\``);\n const orbBin = options.orbBin ?? resolveOrbBinary();\n const registry = behaviorRegistry(pkg, { ...options, orbBin });\n for (const failed of registry.failures) throw new BehaviorPackageError(`${pkg.name}: ${failed.rel} does not lower: ${failed.error}`);\n const mirror = registry.dir;\n const targetRel = options.target ?? 'behaviors/registry';\n const target = join(pkg.root, targetRel);\n const source = packageFile(pkg, sourceRel, 'orb.source');\n for (const file of treeFiles(mirror)) {\n const rel = relative(mirror, file);\n const dest = join(target, rel);\n mkdirSync(dirname(dest), { recursive: true });\n copyFileSync(file, dest);\n if (!rel.endsWith('.orb')) continue;\n const program = JSON.parse(readFileSync(file, 'utf8')) as { locales?: string[] };\n if (program.locales === undefined || program.locales.length === 0) continue;\n const lolo = join(source, rel.replace(/\\.orb$/, '.lolo'));\n const run = nodeChildProcess.spawnSync(orbBin, ['emit', 'orb', lolo, '--output', dest], { cwd: pkg.root, encoding: 'utf8', maxBuffer: 1024 * 1024 * 1024 });\n if (run.status !== 0) throw new BehaviorPackageError(`${pkg.name}: \\`orb emit orb ${rel}\\` failed: ${run.stderr}`);\n }\n return { ...pkg.orb, registry: targetRel };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/identity.ts"],"names":[],"mappings":"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","file":"chunk-VG7BRFUD.js","sourcesContent":["/**\n * Identity model (Almadar Rabit V4, Phase 1 — types only).\n *\n * Branded, prefix-tagged node ids + a workspace-scoped name ledger. Ids are\n * the durable edge keys of the identity-keyed schema graph; the ledger is the\n * sole name↔id map (names are display labels, one row per rename). This module\n * is pure: no I/O, no side effects. Minting is the only impurity (clock +\n * crypto randomness for the ULID suffix).\n *\n * @packageDocumentation\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Branded id types\n// ============================================================================\n\ntype Branded<K extends string> = string & { readonly __idBrand: K };\n\nexport type OrbitalId = Branded<'OrbitalId'>;\nexport type EntityId = Branded<'EntityId'>;\nexport type TraitId = Branded<'TraitId'>;\nexport type EventId = Branded<'EventId'>;\nexport type PageId = Branded<'PageId'>;\nexport type ServiceId = Branded<'ServiceId'>;\nexport type ThemeId = Branded<'ThemeId'>;\nexport type PaletteEntryId = Branded<'PaletteEntryId'>;\n\n/** Node kind ↔ id-prefix table. The single source of truth for every prefix. */\nconst ID_PREFIXES = {\n orbital: 'orb_',\n entity: 'ent_',\n trait: 'trt_',\n event: 'evt_',\n page: 'pag_',\n service: 'svc_',\n theme: 'thm_',\n palette: 'pal_',\n} as const;\n\nexport type IdKind = keyof typeof ID_PREFIXES;\n\n/** Compile-time map from kind to its branded id type. */\nexport interface IdForKind {\n orbital: OrbitalId;\n entity: EntityId;\n trait: TraitId;\n event: EventId;\n page: PageId;\n service: ServiceId;\n theme: ThemeId;\n palette: PaletteEntryId;\n}\n\n/**\n * The one controlled brand assertion in this module. A prefix-checked string\n * is asserted into its branded form here and nowhere else.\n */\nfunction brand<Id extends string>(value: string): Id {\n return value as Id;\n}\n\n// ============================================================================\n// Kind guards + constructors (one shared factory, eight kinds)\n// ============================================================================\n\ninterface IdKindApi<Id extends string> {\n readonly prefix: string;\n is(value: string): value is Id;\n as(value: string): Id;\n}\n\nfunction makeIdKind<Id extends string>(kind: IdKind): IdKindApi<Id> {\n const prefix = ID_PREFIXES[kind];\n const is = (value: string): value is Id =>\n value.startsWith(prefix) && value.length > prefix.length;\n const as = (value: string): Id => {\n if (!is(value)) {\n throw new Error(\n `Expected ${kind} id (prefix \"${prefix}\"), got: ${JSON.stringify(value)}`,\n );\n }\n return brand<Id>(value);\n };\n return { prefix, is, as };\n}\n\nconst orbitalKind = makeIdKind<OrbitalId>('orbital');\nconst entityKind = makeIdKind<EntityId>('entity');\nconst traitKind = makeIdKind<TraitId>('trait');\nconst eventKind = makeIdKind<EventId>('event');\nconst pageKind = makeIdKind<PageId>('page');\nconst serviceKind = makeIdKind<ServiceId>('service');\nconst themeKind = makeIdKind<ThemeId>('theme');\nconst paletteKind = makeIdKind<PaletteEntryId>('palette');\n\nexport const isOrbitalId = orbitalKind.is;\nexport const asOrbitalId = orbitalKind.as;\nexport const isEntityId = entityKind.is;\nexport const asEntityId = entityKind.as;\nexport const isTraitId = traitKind.is;\nexport const asTraitId = traitKind.as;\nexport const isEventId = eventKind.is;\nexport const asEventId = eventKind.as;\nexport const isPageId = pageKind.is;\nexport const asPageId = pageKind.as;\nexport const isServiceId = serviceKind.is;\nexport const asServiceId = serviceKind.as;\nexport const isThemeId = themeKind.is;\nexport const asThemeId = themeKind.as;\nexport const isPaletteEntryId = paletteKind.is;\nexport const asPaletteEntryId = paletteKind.as;\n\n/**\n * The id-prefix for a node kind (`'entity' → 'ent_'`). The JS mirror of the\n * Rust `IdKind::prefix`. Single source of truth is {@link ID_PREFIXES}.\n */\nexport function idPrefix(kind: IdKind): string {\n return ID_PREFIXES[kind];\n}\n\n/**\n * The node kind an id's prefix denotes, or `null` for an unrecognized /\n * bare-prefix string. The JS mirror of the Rust `id_kind_of`. Prefixes are\n * mutually non-overlapping, so match order is irrelevant.\n */\nexport function idKindOf(id: string): IdKind | null {\n for (const kind of Object.keys(ID_PREFIXES) as IdKind[]) {\n const prefix = ID_PREFIXES[kind];\n if (id.startsWith(prefix) && id.length > prefix.length) return kind;\n }\n return null;\n}\n\n// ============================================================================\n// Minting — prefix + ULID\n// ============================================================================\n\nconst CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';\nconst TIME_LEN = 10;\nconst RANDOM_LEN = 16;\n\nfunction randomBytes(len: number): Uint8Array {\n const g = globalThis as { crypto?: { getRandomValues?: (a: Uint8Array) => Uint8Array } };\n if (g.crypto?.getRandomValues) {\n return g.crypto.getRandomValues(new Uint8Array(len));\n }\n throw new Error('mintId: no crypto.getRandomValues available in this runtime');\n}\n\nfunction encodeTime(now: number): string {\n let value = now;\n let out = '';\n for (let i = 0; i < TIME_LEN; i++) {\n const mod = value % 32;\n out = CROCKFORD[mod] + out;\n value = (value - mod) / 32;\n }\n return out;\n}\n\nfunction encodeRandom(): string {\n const bytes = randomBytes(RANDOM_LEN);\n let out = '';\n for (let i = 0; i < RANDOM_LEN; i++) {\n out += CROCKFORD[bytes[i] & 31];\n }\n return out;\n}\n\n/** A 26-char Crockford-base32 ULID: 48-bit ms timestamp + 80 bits of randomness. Needs only `getRandomValues`, so it also runs on a plain-http page where `randomUUID` is absent. */\nexport function mintUlid(): string {\n return encodeTime(Date.now()) + encodeRandom();\n}\n\n/** Mint a fresh, opaque, kind-tagged id: `<prefix><ULID>`. */\nexport function mintId<K extends IdKind>(kind: K): IdForKind[K] {\n return brand<IdForKind[K]>(ID_PREFIXES[kind] + mintUlid());\n}\n\n// ============================================================================\n// Identity ledger\n// ============================================================================\n\n/** Ledger row kind. `palette` entries are manifest ids, not name-ledger rows. */\nexport type LedgerKind =\n | 'orbital'\n | 'entity'\n | 'trait'\n | 'event'\n | 'page'\n | 'service'\n | 'theme';\n\n/**\n * One ledger row: the workspace's name history for a single node id.\n *\n * For kind `'event'` the row is minted per-(trait, declared event) per the\n * Phase-0 freeze — the owning trait is recorded in `parent`; a call-site event\n * rename is a one-row edit on this same id (the baked-vs-current key namespaces\n * collapse into `bakedName` vs `curName`).\n */\nexport interface LedgerEntry {\n id: string;\n kind: LedgerKind;\n bakedName: string;\n curName: string;\n renames: ReadonlyArray<{ from: string; to: string; at: string }>;\n owner: 'std' | 'io' | 'workspace';\n /** Owning trait for kind `'event'` (per-trait event-id namespace). */\n parent?: TraitId;\n}\n\nexport interface IdentityLedger {\n schemaVersion: 1;\n entries: Record<string, LedgerEntry>;\n}\n\n/** Resolve a name to its id via exact `curName` match within `kind`, else null. */\nexport function ledgerResolveName(\n ledger: IdentityLedger,\n kind: LedgerKind,\n name: string,\n): string | null {\n for (const [id, entry] of Object.entries(ledger.entries)) {\n if (entry.kind === kind && entry.curName === name) return id;\n }\n return null;\n}\n\n/** Immutable rename: returns a new ledger with the id's `curName` + `renames` updated; renaming to the current name is a no-op. */\nexport function ledgerRename(\n ledger: IdentityLedger,\n id: string,\n to: string,\n at: string,\n): IdentityLedger {\n const entry = ledger.entries[id];\n if (entry === undefined || entry.curName === to) return ledger;\n const updated: LedgerEntry = {\n ...entry,\n curName: to,\n renames: [...entry.renames, { from: entry.curName, to, at }],\n };\n return { ...ledger, entries: { ...ledger.entries, [id]: updated } };\n}\n\n/** Current display name for an id, or null when the id is not in the ledger. */\nexport function ledgerCurName(ledger: IdentityLedger, id: string): string | null {\n return ledger.entries[id]?.curName ?? null;\n}\n\n// ============================================================================\n// Zod schemas — the `.orb` load-time activation surface (Rabit V4, Phase 4)\n// ============================================================================\n\n/**\n * Prefix-checked, kind-tagged id schemas. Each narrows a validated string to\n * its branded id type via the module's own kind guard, so a schema that reads\n * `TraitIdSchema.optional()` yields `TraitId | undefined` with no cast. The\n * guard is the single source of prefix truth (`ID_PREFIXES`); the schema is a\n * thin zod wrapper over it.\n */\nexport const OrbitalIdSchema = z\n .string()\n .refine(isOrbitalId, { message: `Expected an orbital id (prefix \"${ID_PREFIXES.orbital}\")` });\nexport const EntityIdSchema = z\n .string()\n .refine(isEntityId, { message: `Expected an entity id (prefix \"${ID_PREFIXES.entity}\")` });\nexport const TraitIdSchema = z\n .string()\n .refine(isTraitId, { message: `Expected a trait id (prefix \"${ID_PREFIXES.trait}\")` });\nexport const EventIdSchema = z\n .string()\n .refine(isEventId, { message: `Expected an event id (prefix \"${ID_PREFIXES.event}\")` });\nexport const PageIdSchema = z\n .string()\n .refine(isPageId, { message: `Expected a page id (prefix \"${ID_PREFIXES.page}\")` });\nexport const ServiceIdSchema = z\n .string()\n .refine(isServiceId, { message: `Expected a service id (prefix \"${ID_PREFIXES.service}\")` });\nexport const ThemeIdSchema = z\n .string()\n .refine(isThemeId, { message: `Expected a theme id (prefix \"${ID_PREFIXES.theme}\")` });\nexport const PaletteEntryIdSchema = z\n .string()\n .refine(isPaletteEntryId, { message: `Expected a palette-entry id (prefix \"${ID_PREFIXES.palette}\")` });\n\nexport const LedgerKindSchema = z.enum([\n 'orbital',\n 'entity',\n 'trait',\n 'event',\n 'page',\n 'service',\n 'theme',\n]);\n\nexport const LedgerEntrySchema = z.object({\n id: z.string(),\n kind: LedgerKindSchema,\n bakedName: z.string(),\n curName: z.string(),\n renames: z.array(\n z.object({ from: z.string(), to: z.string(), at: z.string() }),\n ),\n owner: z.enum(['std', 'io', 'workspace']),\n parent: TraitIdSchema.optional(),\n});\n\nexport const IdentityLedgerSchema = z.object({\n schemaVersion: z.literal(1),\n entries: z.record(z.string(), LedgerEntrySchema),\n});\n"]}
|