#observability #wasm #replay

briefcase-wasm

WebAssembly bindings for Briefcase AI

1 stable release

new 2.4.1 Apr 7, 2026

#748 in Web programming

GPL-3.0 license

86KB
2K SLoC

Briefcase AI WebAssembly

WebAssembly bindings for Briefcase AI.

npm version

Install

npm install briefcase-wasm

What this package exports

The generated module exports these primary symbols:

  • init
  • version
  • test_functionality
  • JsDecisionSnapshot
  • JsMemoryStorage
  • WasmInput
  • WasmOutput
  • WasmModelParameters
  • WasmDecisionSnapshot
  • WasmDriftCalculator
  • WasmCostCalculator
  • WasmSanitizer
  • JsBriefcaseClient

Js* classes are lightweight JS-oriented wrappers. Wasm* classes mirror more of the Rust model types.

Quick Start (JS wrappers)

import { init, version, JsDecisionSnapshot, JsMemoryStorage } from 'briefcase-wasm';

init();
console.log(version());

const decision = new JsDecisionSnapshot('chat_completion')
  .add_input('prompt', 'Summarize this text', 'string')
  .add_output('response', 'Summary output', 'string')
  .add_tag('env', 'test');

const storage = new JsMemoryStorage();
const id = storage.save_decision(decision);
const loaded = storage.load_decision(id);
console.log(loaded.to_json());

Quick Start (Wasm model wrappers)

import { WasmInput, WasmOutput, WasmDecisionSnapshot } from 'briefcase-wasm';

const input = new WasmInput('prompt', 'hello', 'string');
const output = new WasmOutput('response', 'hi', 'string');
output.withConfidence(0.93);

const decision = new WasmDecisionSnapshot('chat_completion');
decision.addInput(input);
decision.addOutput(output);
decision.addTag('model', 'gpt-4');

console.log(decision.toObject());

Drift, Cost, and Sanitization

import {
  WasmDriftCalculator,
  WasmCostCalculator,
  WasmSanitizer,
} from 'briefcase-wasm';

const drift = new WasmDriftCalculator();
const driftMetrics = drift.calculateDrift(['A', 'A', 'B']).toObject();

const cost = new WasmCostCalculator();
const estimate = cost.estimateCost('gpt-4', 1200, 300).toObject();

const sanitizer = new WasmSanitizer();
const sanitized = sanitizer.sanitize('Email me at user@example.com').toObject();

console.log({ driftMetrics, estimate, sanitized });

Notes

  • This package does not expose SqliteBackend.
  • If you need local persistence in the browser runtime, use JsMemoryStorage and sync to your own backend.
  • For Python bindings, use briefcase-ai.

License

GPL-3.0. See the project LICENSE file.

Dependencies

~13–18MB
~319K SLoC