akm-cli
Version:
akm (Agent Knowledge Manager) — a portable, local-first capability library for AI agents. Discover, load, share, and improve reusable skills, scripts, workflows, and knowledge across any shell-capable coding agent, including Claude Code, OpenCode, and Cur
41 lines (40 loc) • 1.67 kB
JavaScript
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
/**
* assert.ts — exhaustiveness keystone.
*
* `assertNever` is the single helper the exhaustive-switch refactors consume.
* Placing it in the `never` arm of a `switch`/`if` chain turns any unhandled
* union variant into a *compile-time* error (the argument no longer narrows to
* `never`), and — if the impossible case is somehow reached at runtime — throws
* with the offending value serialized for diagnostics instead of silently
* falling through.
*/
/**
* Assert that a code path is unreachable.
*
* Call this in the default/else arm of an exhaustive dispatch over a union. If
* a new variant is added to the union without a handling arm, the call site
* stops type-checking, surfacing the drift at compile time.
*
* @param x the value the type system has narrowed to `never`
* @param context optional label included in the thrown message for diagnostics
* @throws always — this function never returns
*/
export function assertNever(x, context) {
let serialized;
try {
serialized = JSON.stringify(x);
}
catch {
// Circular structures / non-serializable values fall back to String().
serialized = String(x);
}
if (serialized === undefined) {
// JSON.stringify(undefined) returns undefined, not a string.
serialized = String(x);
}
const where = context ? ` (${context})` : "";
throw new Error(`Unexpected value reached assertNever${where}: ${serialized}`);
}