opencode/packages
Kit Langton e101318f92 refactor(http-recorder): hide cassette format behind Cassette seam
The Cassette interface used to expose its JSON wrapper type (Cassette =
{ version, metadata, interactions }) through read/write/scan, plus a
path() method. Consumers had to know the file format to use the service.

New surface — domain types only:

  interface Interface {
    read:   (name) => Effect<readonly Interaction[], CassetteNotFoundError>
    append: (name, interaction, metadata?) => Effect<{ findings }>
    exists: (name) => Effect<boolean>
    list:   () => Effect<readonly string[]>
  }

What's gone from the public surface: path(), write(), scan(), the
Cassette wrapper type, Entry.path, the format helpers (cassetteFor,
formatCassette, parseCassette, cassettePath). All file-private to the
new fileSystem adapter.

Two adapters:
- Cassette.fileSystem({ directory? }) — file-backed (today's behavior,
  was Cassette.layer)
- Cassette.memory(initial?) — in-memory, used by the package's own
  tests to exercise replay without disk IO. Proves the seam works;
  not user-facing.

Drive-bys from the simplify pass:
- Errors converted to Data.TaggedError (CassetteNotFoundError,
  UnsafeCassetteError) for Effect-native equality + integration.
- storage.ts (5 LOC stub) merged into cassette.ts. hasCassetteSync
  is now exported from cassette.ts directly.
- Entry { name } collapsed to plain string.
- recorder.ts re-export indirection cleaned up; index.ts pulls
  CassetteNotFoundError from cassette.ts directly.
- httpInteractions / webSocketInteractions now take ReadonlyArray<Interaction>
  rather than Cassette (matches the new read shape).

External consumer in packages/llm/test/recorded-test.ts updated
(Cassette.layer → Cassette.fileSystem).
2026-05-10 12:21:48 -04:00
..
app sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
console sync: revert 2026-05-10 02:58:46 -04:00
containers chore: bump Bun to 1.3.13 (#23791) 2026-04-23 00:25:36 -04:00
core sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
desktop sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
docs
enterprise sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
extensions/zed sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
function sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
http-recorder refactor(http-recorder): hide cassette format behind Cassette seam 2026-05-10 12:21:48 -04:00
identity
llm refactor(http-recorder): hide cassette format behind Cassette seam 2026-05-10 12:21:48 -04:00
opencode Scope boolean query overrides 2026-05-10 11:57:52 -04:00
plugin sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
script refactor: replace bun semver with npm semver package 2026-03-09 15:29:55 -04:00
sdk chore: generate 2026-05-10 15:55:49 +00:00
slack sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
storybook feat(prompt): add shell mode UI with cancel button, custom icon, and example placeholder (#24105) 2026-04-24 14:04:55 +08:00
ui sync release versions for v1.14.46 2026-05-10 02:34:36 +00:00
web Zen: add Ring 2.6 1T 2026-05-10 03:51:34 -04:00